@yalehwang/archguard 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 (427) hide show
  1. package/README.md +537 -0
  2. package/dist/cli/cache/arch-json-disk-cache.d.ts +12 -0
  3. package/dist/cli/cache/arch-json-disk-cache.d.ts.map +1 -0
  4. package/dist/cli/cache/arch-json-disk-cache.js +51 -0
  5. package/dist/cli/cache/arch-json-disk-cache.js.map +1 -0
  6. package/dist/cli/cache-manager.d.ts +28 -0
  7. package/dist/cli/cache-manager.d.ts.map +1 -0
  8. package/dist/cli/cache-manager.js +126 -0
  9. package/dist/cli/cache-manager.js.map +1 -0
  10. package/dist/cli/commands/analyze.d.ts +7 -0
  11. package/dist/cli/commands/analyze.d.ts.map +1 -0
  12. package/dist/cli/commands/analyze.js +212 -0
  13. package/dist/cli/commands/analyze.js.map +1 -0
  14. package/dist/cli/commands/cache.d.ts +3 -0
  15. package/dist/cli/commands/cache.d.ts.map +1 -0
  16. package/dist/cli/commands/cache.js +56 -0
  17. package/dist/cli/commands/cache.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts +3 -0
  19. package/dist/cli/commands/init.d.ts.map +1 -0
  20. package/dist/cli/commands/init.js +34 -0
  21. package/dist/cli/commands/init.js.map +1 -0
  22. package/dist/cli/config-loader.d.ts +701 -0
  23. package/dist/cli/config-loader.d.ts.map +1 -0
  24. package/dist/cli/config-loader.js +259 -0
  25. package/dist/cli/config-loader.js.map +1 -0
  26. package/dist/cli/error-handler.d.ts +15 -0
  27. package/dist/cli/error-handler.d.ts.map +1 -0
  28. package/dist/cli/error-handler.js +127 -0
  29. package/dist/cli/error-handler.js.map +1 -0
  30. package/dist/cli/errors.d.ts +15 -0
  31. package/dist/cli/errors.d.ts.map +1 -0
  32. package/dist/cli/errors.js +31 -0
  33. package/dist/cli/errors.js.map +1 -0
  34. package/dist/cli/index.d.ts +4 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +27 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/cli/processors/diagram-processor.d.ts +61 -0
  39. package/dist/cli/processors/diagram-processor.d.ts.map +1 -0
  40. package/dist/cli/processors/diagram-processor.js +610 -0
  41. package/dist/cli/processors/diagram-processor.js.map +1 -0
  42. package/dist/cli/progress/parallel-progress.d.ts +16 -0
  43. package/dist/cli/progress/parallel-progress.d.ts.map +1 -0
  44. package/dist/cli/progress/parallel-progress.js +49 -0
  45. package/dist/cli/progress/parallel-progress.js.map +1 -0
  46. package/dist/cli/progress.d.ts +36 -0
  47. package/dist/cli/progress.d.ts.map +1 -0
  48. package/dist/cli/progress.js +127 -0
  49. package/dist/cli/progress.js.map +1 -0
  50. package/dist/cli/types.d.ts +37 -0
  51. package/dist/cli/types.d.ts.map +1 -0
  52. package/dist/cli/types.js +2 -0
  53. package/dist/cli/types.js.map +1 -0
  54. package/dist/cli/utils/cpp-project-structure-detector.d.ts +10 -0
  55. package/dist/cli/utils/cpp-project-structure-detector.d.ts.map +1 -0
  56. package/dist/cli/utils/cpp-project-structure-detector.js +99 -0
  57. package/dist/cli/utils/cpp-project-structure-detector.js.map +1 -0
  58. package/dist/cli/utils/diagram-index-generator.d.ts +12 -0
  59. package/dist/cli/utils/diagram-index-generator.d.ts.map +1 -0
  60. package/dist/cli/utils/diagram-index-generator.js +94 -0
  61. package/dist/cli/utils/diagram-index-generator.js.map +1 -0
  62. package/dist/cli/utils/file-discovery-service.d.ts +10 -0
  63. package/dist/cli/utils/file-discovery-service.d.ts.map +1 -0
  64. package/dist/cli/utils/file-discovery-service.js +56 -0
  65. package/dist/cli/utils/file-discovery-service.js.map +1 -0
  66. package/dist/cli/utils/output-path-resolver.d.ts +34 -0
  67. package/dist/cli/utils/output-path-resolver.d.ts.map +1 -0
  68. package/dist/cli/utils/output-path-resolver.js +91 -0
  69. package/dist/cli/utils/output-path-resolver.js.map +1 -0
  70. package/dist/cli/utils/project-structure-detector.d.ts +6 -0
  71. package/dist/cli/utils/project-structure-detector.d.ts.map +1 -0
  72. package/dist/cli/utils/project-structure-detector.js +159 -0
  73. package/dist/cli/utils/project-structure-detector.js.map +1 -0
  74. package/dist/core/interfaces/dependency.d.ts +14 -0
  75. package/dist/core/interfaces/dependency.d.ts.map +1 -0
  76. package/dist/core/interfaces/dependency.js +2 -0
  77. package/dist/core/interfaces/dependency.js.map +1 -0
  78. package/dist/core/interfaces/errors.d.ts +29 -0
  79. package/dist/core/interfaces/errors.d.ts.map +1 -0
  80. package/dist/core/interfaces/errors.js +59 -0
  81. package/dist/core/interfaces/errors.js.map +1 -0
  82. package/dist/core/interfaces/index.d.ts +6 -0
  83. package/dist/core/interfaces/index.d.ts.map +1 -0
  84. package/dist/core/interfaces/index.js +2 -0
  85. package/dist/core/interfaces/index.js.map +1 -0
  86. package/dist/core/interfaces/language-plugin.d.ts +34 -0
  87. package/dist/core/interfaces/language-plugin.d.ts.map +1 -0
  88. package/dist/core/interfaces/language-plugin.js +2 -0
  89. package/dist/core/interfaces/language-plugin.js.map +1 -0
  90. package/dist/core/interfaces/parser.d.ts +15 -0
  91. package/dist/core/interfaces/parser.d.ts.map +1 -0
  92. package/dist/core/interfaces/parser.js +2 -0
  93. package/dist/core/interfaces/parser.js.map +1 -0
  94. package/dist/core/interfaces/validation.d.ts +24 -0
  95. package/dist/core/interfaces/validation.d.ts.map +1 -0
  96. package/dist/core/interfaces/validation.js +2 -0
  97. package/dist/core/interfaces/validation.js.map +1 -0
  98. package/dist/core/plugin-registry.d.ts +19 -0
  99. package/dist/core/plugin-registry.d.ts.map +1 -0
  100. package/dist/core/plugin-registry.js +137 -0
  101. package/dist/core/plugin-registry.js.map +1 -0
  102. package/dist/index.d.ts +4 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +4 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/mermaid/auto-repair.d.ts +23 -0
  107. package/dist/mermaid/auto-repair.d.ts.map +1 -0
  108. package/dist/mermaid/auto-repair.js +197 -0
  109. package/dist/mermaid/auto-repair.js.map +1 -0
  110. package/dist/mermaid/comment-generator.d.ts +10 -0
  111. package/dist/mermaid/comment-generator.d.ts.map +1 -0
  112. package/dist/mermaid/comment-generator.js +213 -0
  113. package/dist/mermaid/comment-generator.js.map +1 -0
  114. package/dist/mermaid/cpp-package-flowchart-generator.d.ts +5 -0
  115. package/dist/mermaid/cpp-package-flowchart-generator.d.ts.map +1 -0
  116. package/dist/mermaid/cpp-package-flowchart-generator.js +33 -0
  117. package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -0
  118. package/dist/mermaid/diagram-generator.d.ts +31 -0
  119. package/dist/mermaid/diagram-generator.d.ts.map +1 -0
  120. package/dist/mermaid/diagram-generator.js +194 -0
  121. package/dist/mermaid/diagram-generator.js.map +1 -0
  122. package/dist/mermaid/external-dependencies.d.ts +3 -0
  123. package/dist/mermaid/external-dependencies.d.ts.map +1 -0
  124. package/dist/mermaid/external-dependencies.js +38 -0
  125. package/dist/mermaid/external-dependencies.js.map +1 -0
  126. package/dist/mermaid/generator.d.ts +44 -0
  127. package/dist/mermaid/generator.d.ts.map +1 -0
  128. package/dist/mermaid/generator.js +511 -0
  129. package/dist/mermaid/generator.js.map +1 -0
  130. package/dist/mermaid/grouper.d.ts +15 -0
  131. package/dist/mermaid/grouper.d.ts.map +1 -0
  132. package/dist/mermaid/grouper.js +194 -0
  133. package/dist/mermaid/grouper.js.map +1 -0
  134. package/dist/mermaid/index.d.ts +14 -0
  135. package/dist/mermaid/index.d.ts.map +1 -0
  136. package/dist/mermaid/index.js +13 -0
  137. package/dist/mermaid/index.js.map +1 -0
  138. package/dist/mermaid/progress.d.ts +15 -0
  139. package/dist/mermaid/progress.d.ts.map +1 -0
  140. package/dist/mermaid/progress.js +8 -0
  141. package/dist/mermaid/progress.js.map +1 -0
  142. package/dist/mermaid/render-worker-pool.d.ts +29 -0
  143. package/dist/mermaid/render-worker-pool.d.ts.map +1 -0
  144. package/dist/mermaid/render-worker-pool.js +73 -0
  145. package/dist/mermaid/render-worker-pool.js.map +1 -0
  146. package/dist/mermaid/render-worker.d.ts +2 -0
  147. package/dist/mermaid/render-worker.d.ts.map +1 -0
  148. package/dist/mermaid/render-worker.js +22 -0
  149. package/dist/mermaid/render-worker.js.map +1 -0
  150. package/dist/mermaid/renderer.d.ts +17 -0
  151. package/dist/mermaid/renderer.d.ts.map +1 -0
  152. package/dist/mermaid/renderer.js +204 -0
  153. package/dist/mermaid/renderer.js.map +1 -0
  154. package/dist/mermaid/ts-module-graph-renderer.d.ts +3 -0
  155. package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -0
  156. package/dist/mermaid/ts-module-graph-renderer.js +180 -0
  157. package/dist/mermaid/ts-module-graph-renderer.js.map +1 -0
  158. package/dist/mermaid/types.d.ts +122 -0
  159. package/dist/mermaid/types.d.ts.map +1 -0
  160. package/dist/mermaid/types.js +2 -0
  161. package/dist/mermaid/types.js.map +1 -0
  162. package/dist/mermaid/validation-pipeline.d.ts +29 -0
  163. package/dist/mermaid/validation-pipeline.d.ts.map +1 -0
  164. package/dist/mermaid/validation-pipeline.js +163 -0
  165. package/dist/mermaid/validation-pipeline.js.map +1 -0
  166. package/dist/mermaid/validator-parse.d.ts +11 -0
  167. package/dist/mermaid/validator-parse.d.ts.map +1 -0
  168. package/dist/mermaid/validator-parse.js +130 -0
  169. package/dist/mermaid/validator-parse.js.map +1 -0
  170. package/dist/mermaid/validator-quality.d.ts +17 -0
  171. package/dist/mermaid/validator-quality.d.ts.map +1 -0
  172. package/dist/mermaid/validator-quality.js +187 -0
  173. package/dist/mermaid/validator-quality.js.map +1 -0
  174. package/dist/mermaid/validator-render.d.ts +12 -0
  175. package/dist/mermaid/validator-render.d.ts.map +1 -0
  176. package/dist/mermaid/validator-render.js +98 -0
  177. package/dist/mermaid/validator-render.js.map +1 -0
  178. package/dist/mermaid/validator-structural.d.ts +11 -0
  179. package/dist/mermaid/validator-structural.d.ts.map +1 -0
  180. package/dist/mermaid/validator-structural.js +116 -0
  181. package/dist/mermaid/validator-structural.js.map +1 -0
  182. package/dist/parser/archjson-aggregator.d.ts +11 -0
  183. package/dist/parser/archjson-aggregator.d.ts.map +1 -0
  184. package/dist/parser/archjson-aggregator.js +113 -0
  185. package/dist/parser/archjson-aggregator.js.map +1 -0
  186. package/dist/parser/base-extractor.d.ts +6 -0
  187. package/dist/parser/base-extractor.d.ts.map +1 -0
  188. package/dist/parser/base-extractor.js +13 -0
  189. package/dist/parser/base-extractor.js.map +1 -0
  190. package/dist/parser/class-extractor.d.ts +17 -0
  191. package/dist/parser/class-extractor.d.ts.map +1 -0
  192. package/dist/parser/class-extractor.js +144 -0
  193. package/dist/parser/class-extractor.js.map +1 -0
  194. package/dist/parser/enum-extractor.d.ts +9 -0
  195. package/dist/parser/enum-extractor.d.ts.map +1 -0
  196. package/dist/parser/enum-extractor.js +45 -0
  197. package/dist/parser/enum-extractor.js.map +1 -0
  198. package/dist/parser/errors.d.ts +7 -0
  199. package/dist/parser/errors.d.ts.map +1 -0
  200. package/dist/parser/errors.js +14 -0
  201. package/dist/parser/errors.js.map +1 -0
  202. package/dist/parser/function-extractor.d.ts +7 -0
  203. package/dist/parser/function-extractor.d.ts.map +1 -0
  204. package/dist/parser/function-extractor.js +59 -0
  205. package/dist/parser/function-extractor.js.map +1 -0
  206. package/dist/parser/index.d.ts +10 -0
  207. package/dist/parser/index.d.ts.map +1 -0
  208. package/dist/parser/index.js +9 -0
  209. package/dist/parser/index.js.map +1 -0
  210. package/dist/parser/interface-extractor.d.ts +14 -0
  211. package/dist/parser/interface-extractor.d.ts.map +1 -0
  212. package/dist/parser/interface-extractor.js +90 -0
  213. package/dist/parser/interface-extractor.js.map +1 -0
  214. package/dist/parser/metrics-calculator.d.ts +9 -0
  215. package/dist/parser/metrics-calculator.d.ts.map +1 -0
  216. package/dist/parser/metrics-calculator.js +84 -0
  217. package/dist/parser/metrics-calculator.js.map +1 -0
  218. package/dist/parser/parallel-parser.d.ts +38 -0
  219. package/dist/parser/parallel-parser.d.ts.map +1 -0
  220. package/dist/parser/parallel-parser.js +170 -0
  221. package/dist/parser/parallel-parser.js.map +1 -0
  222. package/dist/parser/parse-cache.d.ts +8 -0
  223. package/dist/parser/parse-cache.d.ts.map +1 -0
  224. package/dist/parser/parse-cache.js +25 -0
  225. package/dist/parser/parse-cache.js.map +1 -0
  226. package/dist/parser/relation-extractor.d.ts +14 -0
  227. package/dist/parser/relation-extractor.d.ts.map +1 -0
  228. package/dist/parser/relation-extractor.js +203 -0
  229. package/dist/parser/relation-extractor.js.map +1 -0
  230. package/dist/parser/typescript-parser.d.ts +19 -0
  231. package/dist/parser/typescript-parser.d.ts.map +1 -0
  232. package/dist/parser/typescript-parser.js +182 -0
  233. package/dist/parser/typescript-parser.js.map +1 -0
  234. package/dist/plugins/cpp/archjson-mapper.d.ts +13 -0
  235. package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -0
  236. package/dist/plugins/cpp/archjson-mapper.js +180 -0
  237. package/dist/plugins/cpp/archjson-mapper.js.map +1 -0
  238. package/dist/plugins/cpp/builders/class-builder.d.ts +15 -0
  239. package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -0
  240. package/dist/plugins/cpp/builders/class-builder.js +102 -0
  241. package/dist/plugins/cpp/builders/class-builder.js.map +1 -0
  242. package/dist/plugins/cpp/builders/header-merger.d.ts +8 -0
  243. package/dist/plugins/cpp/builders/header-merger.d.ts.map +1 -0
  244. package/dist/plugins/cpp/builders/header-merger.js +65 -0
  245. package/dist/plugins/cpp/builders/header-merger.js.map +1 -0
  246. package/dist/plugins/cpp/cpp-type-extractor.d.ts +13 -0
  247. package/dist/plugins/cpp/cpp-type-extractor.d.ts.map +1 -0
  248. package/dist/plugins/cpp/cpp-type-extractor.js +153 -0
  249. package/dist/plugins/cpp/cpp-type-extractor.js.map +1 -0
  250. package/dist/plugins/cpp/dependency-extractor.d.ts +5 -0
  251. package/dist/plugins/cpp/dependency-extractor.d.ts.map +1 -0
  252. package/dist/plugins/cpp/dependency-extractor.js +28 -0
  253. package/dist/plugins/cpp/dependency-extractor.js.map +1 -0
  254. package/dist/plugins/cpp/index.d.ts +21 -0
  255. package/dist/plugins/cpp/index.d.ts.map +1 -0
  256. package/dist/plugins/cpp/index.js +113 -0
  257. package/dist/plugins/cpp/index.js.map +1 -0
  258. package/dist/plugins/cpp/tree-sitter-bridge.d.ts +20 -0
  259. package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -0
  260. package/dist/plugins/cpp/tree-sitter-bridge.js +258 -0
  261. package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -0
  262. package/dist/plugins/cpp/types.d.ts +75 -0
  263. package/dist/plugins/cpp/types.d.ts.map +1 -0
  264. package/dist/plugins/cpp/types.js +2 -0
  265. package/dist/plugins/cpp/types.js.map +1 -0
  266. package/dist/plugins/golang/archjson-mapper.d.ts +10 -0
  267. package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -0
  268. package/dist/plugins/golang/archjson-mapper.js +121 -0
  269. package/dist/plugins/golang/archjson-mapper.js.map +1 -0
  270. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +16 -0
  271. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -0
  272. package/dist/plugins/golang/atlas/behavior-analyzer.js +32 -0
  273. package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -0
  274. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +12 -0
  275. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -0
  276. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +219 -0
  277. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -0
  278. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +18 -0
  279. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -0
  280. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +300 -0
  281. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -0
  282. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts +15 -0
  283. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -0
  284. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +254 -0
  285. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -0
  286. package/dist/plugins/golang/atlas/builders/i-atlas-builder.d.ts +5 -0
  287. package/dist/plugins/golang/atlas/builders/i-atlas-builder.d.ts.map +1 -0
  288. package/dist/plugins/golang/atlas/builders/i-atlas-builder.js +2 -0
  289. package/dist/plugins/golang/atlas/builders/i-atlas-builder.js.map +1 -0
  290. package/dist/plugins/golang/atlas/builders/index.d.ts +6 -0
  291. package/dist/plugins/golang/atlas/builders/index.d.ts.map +1 -0
  292. package/dist/plugins/golang/atlas/builders/index.js +5 -0
  293. package/dist/plugins/golang/atlas/builders/index.js.map +1 -0
  294. package/dist/plugins/golang/atlas/builders/package-graph-builder.d.ts +14 -0
  295. package/dist/plugins/golang/atlas/builders/package-graph-builder.d.ts.map +1 -0
  296. package/dist/plugins/golang/atlas/builders/package-graph-builder.js +115 -0
  297. package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -0
  298. package/dist/plugins/golang/atlas/framework-detector.d.ts +11 -0
  299. package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -0
  300. package/dist/plugins/golang/atlas/framework-detector.js +82 -0
  301. package/dist/plugins/golang/atlas/framework-detector.js.map +1 -0
  302. package/dist/plugins/golang/atlas/go-mod-resolver.d.ts +21 -0
  303. package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -0
  304. package/dist/plugins/golang/atlas/go-mod-resolver.js +90 -0
  305. package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -0
  306. package/dist/plugins/golang/atlas/index.d.ts +28 -0
  307. package/dist/plugins/golang/atlas/index.d.ts.map +1 -0
  308. package/dist/plugins/golang/atlas/index.js +166 -0
  309. package/dist/plugins/golang/atlas/index.js.map +1 -0
  310. package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts +7 -0
  311. package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -0
  312. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +62 -0
  313. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -0
  314. package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts +24 -0
  315. package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -0
  316. package/dist/plugins/golang/atlas/renderers/mermaid-templates.js +688 -0
  317. package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -0
  318. package/dist/plugins/golang/atlas/types.d.ts +63 -0
  319. package/dist/plugins/golang/atlas/types.d.ts.map +1 -0
  320. package/dist/plugins/golang/atlas/types.js +2 -0
  321. package/dist/plugins/golang/atlas/types.js.map +1 -0
  322. package/dist/plugins/golang/dependency-extractor.d.ts +7 -0
  323. package/dist/plugins/golang/dependency-extractor.d.ts.map +1 -0
  324. package/dist/plugins/golang/dependency-extractor.js +100 -0
  325. package/dist/plugins/golang/dependency-extractor.js.map +1 -0
  326. package/dist/plugins/golang/gopls-client.d.ts +38 -0
  327. package/dist/plugins/golang/gopls-client.d.ts.map +1 -0
  328. package/dist/plugins/golang/gopls-client.js +354 -0
  329. package/dist/plugins/golang/gopls-client.js.map +1 -0
  330. package/dist/plugins/golang/index.d.ts +29 -0
  331. package/dist/plugins/golang/index.d.ts.map +1 -0
  332. package/dist/plugins/golang/index.js +242 -0
  333. package/dist/plugins/golang/index.js.map +1 -0
  334. package/dist/plugins/golang/interface-matcher.d.ts +14 -0
  335. package/dist/plugins/golang/interface-matcher.d.ts.map +1 -0
  336. package/dist/plugins/golang/interface-matcher.js +235 -0
  337. package/dist/plugins/golang/interface-matcher.js.map +1 -0
  338. package/dist/plugins/golang/tree-sitter-bridge.d.ts +32 -0
  339. package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -0
  340. package/dist/plugins/golang/tree-sitter-bridge.js +579 -0
  341. package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -0
  342. package/dist/plugins/golang/types.d.ts +119 -0
  343. package/dist/plugins/golang/types.d.ts.map +1 -0
  344. package/dist/plugins/golang/types.js +2 -0
  345. package/dist/plugins/golang/types.js.map +1 -0
  346. package/dist/plugins/java/archjson-mapper.d.ts +15 -0
  347. package/dist/plugins/java/archjson-mapper.d.ts.map +1 -0
  348. package/dist/plugins/java/archjson-mapper.js +273 -0
  349. package/dist/plugins/java/archjson-mapper.js.map +1 -0
  350. package/dist/plugins/java/dependency-extractor.d.ts +9 -0
  351. package/dist/plugins/java/dependency-extractor.d.ts.map +1 -0
  352. package/dist/plugins/java/dependency-extractor.js +99 -0
  353. package/dist/plugins/java/dependency-extractor.js.map +1 -0
  354. package/dist/plugins/java/index.d.ts +21 -0
  355. package/dist/plugins/java/index.d.ts.map +1 -0
  356. package/dist/plugins/java/index.js +167 -0
  357. package/dist/plugins/java/index.js.map +1 -0
  358. package/dist/plugins/java/tree-sitter-bridge.d.ts +19 -0
  359. package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -0
  360. package/dist/plugins/java/tree-sitter-bridge.js +334 -0
  361. package/dist/plugins/java/tree-sitter-bridge.js.map +1 -0
  362. package/dist/plugins/java/types.d.ts +81 -0
  363. package/dist/plugins/java/types.d.ts.map +1 -0
  364. package/dist/plugins/java/types.js +2 -0
  365. package/dist/plugins/java/types.js.map +1 -0
  366. package/dist/plugins/python/archjson-mapper.d.ts +19 -0
  367. package/dist/plugins/python/archjson-mapper.d.ts.map +1 -0
  368. package/dist/plugins/python/archjson-mapper.js +170 -0
  369. package/dist/plugins/python/archjson-mapper.js.map +1 -0
  370. package/dist/plugins/python/dependency-extractor.d.ts +11 -0
  371. package/dist/plugins/python/dependency-extractor.d.ts.map +1 -0
  372. package/dist/plugins/python/dependency-extractor.js +186 -0
  373. package/dist/plugins/python/dependency-extractor.js.map +1 -0
  374. package/dist/plugins/python/index.d.ts +21 -0
  375. package/dist/plugins/python/index.d.ts.map +1 -0
  376. package/dist/plugins/python/index.js +142 -0
  377. package/dist/plugins/python/index.js.map +1 -0
  378. package/dist/plugins/python/tree-sitter-bridge.d.ts +16 -0
  379. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -0
  380. package/dist/plugins/python/tree-sitter-bridge.js +352 -0
  381. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -0
  382. package/dist/plugins/python/types.d.ts +86 -0
  383. package/dist/plugins/python/types.d.ts.map +1 -0
  384. package/dist/plugins/python/types.js +2 -0
  385. package/dist/plugins/python/types.js.map +1 -0
  386. package/dist/plugins/shared/mapper-utils.d.ts +4 -0
  387. package/dist/plugins/shared/mapper-utils.d.ts.map +1 -0
  388. package/dist/plugins/shared/mapper-utils.js +12 -0
  389. package/dist/plugins/shared/mapper-utils.js.map +1 -0
  390. package/dist/plugins/typescript/builders/module-graph-builder.d.ts +8 -0
  391. package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -0
  392. package/dist/plugins/typescript/builders/module-graph-builder.js +175 -0
  393. package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -0
  394. package/dist/plugins/typescript/index.d.ts +26 -0
  395. package/dist/plugins/typescript/index.d.ts.map +1 -0
  396. package/dist/plugins/typescript/index.js +232 -0
  397. package/dist/plugins/typescript/index.js.map +1 -0
  398. package/dist/plugins/typescript/typescript-analyzer.d.ts +8 -0
  399. package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -0
  400. package/dist/plugins/typescript/typescript-analyzer.js +13 -0
  401. package/dist/plugins/typescript/typescript-analyzer.js.map +1 -0
  402. package/dist/scripts/migrate-to-mermaid.js +214 -0
  403. package/dist/types/config.d.ts +140 -0
  404. package/dist/types/config.d.ts.map +1 -0
  405. package/dist/types/config.js +6 -0
  406. package/dist/types/config.js.map +1 -0
  407. package/dist/types/extensions.d.ts +224 -0
  408. package/dist/types/extensions.d.ts.map +1 -0
  409. package/dist/types/extensions.js +3 -0
  410. package/dist/types/extensions.js.map +1 -0
  411. package/dist/types/index.d.ts +89 -0
  412. package/dist/types/index.d.ts.map +1 -0
  413. package/dist/types/index.js +3 -0
  414. package/dist/types/index.js.map +1 -0
  415. package/dist/utils/cli-detector.d.ts +8 -0
  416. package/dist/utils/cli-detector.d.ts.map +1 -0
  417. package/dist/utils/cli-detector.js +38 -0
  418. package/dist/utils/cli-detector.js.map +1 -0
  419. package/dist/utils/index.d.ts +4 -0
  420. package/dist/utils/index.d.ts.map +1 -0
  421. package/dist/utils/index.js +3 -0
  422. package/dist/utils/index.js.map +1 -0
  423. package/dist/utils/tsconfig-finder.d.ts +7 -0
  424. package/dist/utils/tsconfig-finder.d.ts.map +1 -0
  425. package/dist/utils/tsconfig-finder.js +31 -0
  426. package/dist/utils/tsconfig-finder.js.map +1 -0
  427. package/package.json +95 -0
@@ -0,0 +1,579 @@
1
+ import Parser from 'tree-sitter';
2
+ import Go from 'tree-sitter-go';
3
+ export class TreeSitterBridge {
4
+ parser;
5
+ constructor() {
6
+ this.parser = new Parser();
7
+ this.parser.setLanguage(Go);
8
+ }
9
+ parseCode(code, filePath, options) {
10
+ const tree = this.parser.parse(code);
11
+ const rootNode = tree.rootNode;
12
+ const packageName = this.extractPackageName(rootNode, code);
13
+ const imports = this.extractImports(rootNode, code, filePath);
14
+ const structs = [];
15
+ const interfaces = [];
16
+ const typeDecls = rootNode.descendantsOfType('type_declaration');
17
+ for (const typeDecl of typeDecls) {
18
+ const typeSpec = typeDecl.namedChildren.find((child) => child.type === 'type_spec');
19
+ if (!typeSpec)
20
+ continue;
21
+ const nameNode = typeSpec.childForFieldName('name');
22
+ if (!nameNode)
23
+ continue;
24
+ const typeName = code.substring(nameNode.startIndex, nameNode.endIndex);
25
+ const typeNode = typeSpec.childForFieldName('type');
26
+ if (typeNode?.type === 'struct_type') {
27
+ structs.push(this.extractStruct(typeName, typeNode, packageName, code, filePath));
28
+ }
29
+ else if (typeNode?.type === 'interface_type') {
30
+ interfaces.push(this.extractInterface(typeName, typeNode, packageName, code, filePath));
31
+ }
32
+ }
33
+ const methodDecls = rootNode.descendantsOfType('method_declaration');
34
+ const orphanedMethods = [];
35
+ for (const methodDecl of methodDecls) {
36
+ const method = this.extractMethod(methodDecl, code, filePath, options);
37
+ if (method && method.receiverType) {
38
+ const struct = structs.find((s) => s.name === method.receiverType);
39
+ if (struct) {
40
+ struct.methods.push(method);
41
+ }
42
+ else {
43
+ orphanedMethods.push(method);
44
+ }
45
+ }
46
+ }
47
+ const functions = options?.extractBodies
48
+ ? this.extractFunctionsWithBodies(rootNode, code, filePath, packageName, options)
49
+ : this.extractFunctions(rootNode, code, filePath, packageName);
50
+ return {
51
+ id: packageName,
52
+ name: packageName,
53
+ fullName: '',
54
+ dirPath: '',
55
+ imports,
56
+ structs,
57
+ interfaces,
58
+ functions,
59
+ sourceFiles: [filePath],
60
+ ...(orphanedMethods.length > 0 ? { orphanedMethods } : {}),
61
+ };
62
+ }
63
+ extractFunctions(rootNode, code, filePath, packageName) {
64
+ const functions = [];
65
+ const funcDecls = rootNode.descendantsOfType('function_declaration');
66
+ for (const funcDecl of funcDecls) {
67
+ functions.push(this.extractFunctionSignature(funcDecl, code, filePath, packageName));
68
+ }
69
+ return functions;
70
+ }
71
+ extractFunctionsWithBodies(rootNode, code, filePath, packageName, options) {
72
+ const funcDecls = rootNode.descendantsOfType('function_declaration');
73
+ const functions = [];
74
+ for (const funcDecl of funcDecls) {
75
+ const func = this.extractFunctionSignature(funcDecl, code, filePath, packageName);
76
+ const blockNode = funcDecl.childForFieldName('body');
77
+ if (blockNode) {
78
+ if (options.selectiveExtraction) {
79
+ if (this.shouldExtractBody(blockNode, code)) {
80
+ func.body = this.extractFunctionBody(blockNode, code, filePath);
81
+ }
82
+ }
83
+ else {
84
+ func.body = this.extractFunctionBody(blockNode, code, filePath);
85
+ }
86
+ }
87
+ functions.push(func);
88
+ }
89
+ return functions;
90
+ }
91
+ extractFunctionSignature(funcDecl, code, filePath, packageName) {
92
+ const nameNode = funcDecl.childForFieldName('name');
93
+ const funcName = nameNode ? code.substring(nameNode.startIndex, nameNode.endIndex) : '';
94
+ const parameters = this.extractParameters(funcDecl, code, filePath);
95
+ const returnTypes = this.extractReturnTypes(funcDecl, code);
96
+ return {
97
+ name: funcName,
98
+ packageName,
99
+ parameters,
100
+ returnTypes,
101
+ exported: this.isExported(funcName),
102
+ location: this.nodeToLocation(funcDecl, filePath),
103
+ };
104
+ }
105
+ shouldExtractBody(blockNode, code) {
106
+ const targetNodeTypes = [
107
+ 'go_statement',
108
+ 'send_statement',
109
+ 'receive_expression',
110
+ ];
111
+ if (targetNodeTypes.some((nodeType) => blockNode.descendantsOfType(nodeType).length > 0)) {
112
+ return true;
113
+ }
114
+ const httpHandlerNames = new Set([
115
+ 'HandleFunc',
116
+ 'Handle',
117
+ 'GET',
118
+ 'POST',
119
+ 'PUT',
120
+ 'DELETE',
121
+ 'PATCH',
122
+ ]);
123
+ for (const callExpr of blockNode.descendantsOfType('call_expression')) {
124
+ const funcNode = callExpr.childForFieldName('function');
125
+ if (!funcNode)
126
+ continue;
127
+ let fnName = '';
128
+ if (funcNode.type === 'identifier') {
129
+ fnName = funcNode.text;
130
+ }
131
+ else if (funcNode.type === 'selector_expression') {
132
+ const field = funcNode.childForFieldName('field');
133
+ if (field)
134
+ fnName = field.text;
135
+ }
136
+ if (httpHandlerNames.has(fnName))
137
+ return true;
138
+ }
139
+ const parentDecl = blockNode.parent;
140
+ if (parentDecl) {
141
+ const paramsNode = parentDecl.childForFieldName('parameters');
142
+ if (paramsNode) {
143
+ const paramsText = code.substring(paramsNode.startIndex, paramsNode.endIndex);
144
+ if (paramsText.includes('ResponseWriter') && paramsText.includes('Request')) {
145
+ return true;
146
+ }
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+ extractFunctionBody(blockNode, code, filePath) {
152
+ return {
153
+ calls: this.extractCallExprs(blockNode, code, filePath),
154
+ goSpawns: this.extractGoSpawns(blockNode, code, filePath),
155
+ channelOps: this.extractChannelOps(blockNode, code, filePath),
156
+ };
157
+ }
158
+ extractGoSpawns(block, code, filePath) {
159
+ const spawns = [];
160
+ const goStmts = block.descendantsOfType('go_statement');
161
+ for (const goStmt of goStmts) {
162
+ const children = goStmt.namedChildren;
163
+ if (children.length === 0)
164
+ continue;
165
+ const expr = children[0];
166
+ if (expr.type === 'call_expression') {
167
+ const call = this.extractCallExpr(expr, code, filePath);
168
+ spawns.push({ call, location: this.nodeToLocation(goStmt, filePath) });
169
+ }
170
+ else if (expr.type === 'func_literal') {
171
+ spawns.push({
172
+ call: { functionName: '<anonymous>', location: this.nodeToLocation(expr, filePath) },
173
+ location: this.nodeToLocation(goStmt, filePath),
174
+ });
175
+ }
176
+ }
177
+ return spawns;
178
+ }
179
+ extractCallExprs(block, code, filePath) {
180
+ const calls = [];
181
+ const callExprs = block.descendantsOfType('call_expression');
182
+ for (const callExpr of callExprs) {
183
+ calls.push(this.extractCallExpr(callExpr, code, filePath));
184
+ }
185
+ return calls;
186
+ }
187
+ extractCallExpr(callExpr, code, filePath) {
188
+ const funcNode = callExpr.childForFieldName('function');
189
+ let functionName = '';
190
+ let packageName;
191
+ let receiverType;
192
+ if (funcNode) {
193
+ if (funcNode.type === 'identifier') {
194
+ functionName = code.substring(funcNode.startIndex, funcNode.endIndex);
195
+ }
196
+ else if (funcNode.type === 'selector_expression') {
197
+ const operand = funcNode.childForFieldName('operand');
198
+ const field = funcNode.childForFieldName('field');
199
+ if (operand && field) {
200
+ packageName = code.substring(operand.startIndex, operand.endIndex);
201
+ functionName = code.substring(field.startIndex, field.endIndex);
202
+ }
203
+ }
204
+ }
205
+ const argsNode = callExpr.childForFieldName('arguments');
206
+ const args = [];
207
+ if (argsNode) {
208
+ for (const child of argsNode.namedChildren) {
209
+ const text = code.substring(child.startIndex, child.endIndex);
210
+ if (child.type === 'interpreted_string_literal' || child.type === 'raw_string_literal') {
211
+ args.push(text.slice(1, -1));
212
+ }
213
+ else {
214
+ args.push(text);
215
+ }
216
+ }
217
+ }
218
+ return {
219
+ functionName,
220
+ packageName,
221
+ receiverType,
222
+ args,
223
+ location: this.nodeToLocation(callExpr, filePath),
224
+ };
225
+ }
226
+ extractChannelOps(block, code, filePath) {
227
+ const ops = [];
228
+ for (const sendStmt of block.descendantsOfType('send_statement')) {
229
+ const channel = sendStmt.childForFieldName('channel');
230
+ ops.push({
231
+ channelName: channel ? code.substring(channel.startIndex, channel.endIndex) : '',
232
+ operation: 'send',
233
+ location: this.nodeToLocation(sendStmt, filePath),
234
+ });
235
+ }
236
+ for (const recvExpr of block.descendantsOfType('receive_expression')) {
237
+ const operand = recvExpr.namedChildren[0];
238
+ ops.push({
239
+ channelName: operand ? code.substring(operand.startIndex, operand.endIndex) : '',
240
+ operation: 'receive',
241
+ location: this.nodeToLocation(recvExpr, filePath),
242
+ });
243
+ }
244
+ for (const callExpr of block.descendantsOfType('call_expression')) {
245
+ const funcNode = callExpr.childForFieldName('function');
246
+ if (funcNode && code.substring(funcNode.startIndex, funcNode.endIndex) === 'make') {
247
+ const args = callExpr.childForFieldName('arguments');
248
+ if (args) {
249
+ const firstArg = args.namedChildren[0];
250
+ if (firstArg && firstArg.type === 'channel_type') {
251
+ ops.push({
252
+ channelName: this.extractMakeChanVarName(callExpr, code),
253
+ operation: 'make',
254
+ location: this.nodeToLocation(callExpr, filePath),
255
+ });
256
+ }
257
+ }
258
+ }
259
+ }
260
+ return ops;
261
+ }
262
+ extractMakeChanVarName(callExpr, code) {
263
+ let node = callExpr.parent;
264
+ while (node) {
265
+ if (node.type === 'short_var_declaration' || node.type === 'assignment_statement') {
266
+ const lhsList = node.namedChildren[0];
267
+ const rhsList = node.namedChildren[1];
268
+ if (lhsList && rhsList) {
269
+ const rhsIdx = rhsList.namedChildren.findIndex((ch) => ch.startIndex <= callExpr.startIndex && ch.endIndex >= callExpr.endIndex);
270
+ const lhsVar = lhsList.namedChildren[rhsIdx >= 0 ? rhsIdx : 0];
271
+ if (lhsVar) {
272
+ if (lhsVar.type === 'identifier') {
273
+ return code.substring(lhsVar.startIndex, lhsVar.endIndex);
274
+ }
275
+ if (lhsVar.type === 'selector_expression') {
276
+ const field = lhsVar.namedChildren[lhsVar.namedChildCount - 1];
277
+ if (field)
278
+ return code.substring(field.startIndex, field.endIndex);
279
+ }
280
+ }
281
+ }
282
+ break;
283
+ }
284
+ if (['block', 'function_declaration', 'method_declaration', 'func_literal'].includes(node.type)) {
285
+ break;
286
+ }
287
+ node = node.parent;
288
+ }
289
+ return '';
290
+ }
291
+ extractPackageName(rootNode, code) {
292
+ const packageClause = rootNode.namedChildren.find((c) => c.type === 'package_clause');
293
+ if (!packageClause) {
294
+ return 'main';
295
+ }
296
+ const nameNode = packageClause.namedChild(0);
297
+ if (!nameNode) {
298
+ return 'main';
299
+ }
300
+ return code.substring(nameNode.startIndex, nameNode.endIndex);
301
+ }
302
+ extractImports(rootNode, code, filePath) {
303
+ const imports = [];
304
+ const importDecls = rootNode.descendantsOfType('import_declaration');
305
+ for (const importDecl of importDecls) {
306
+ const importSpecs = importDecl.descendantsOfType('import_spec');
307
+ for (const importSpec of importSpecs) {
308
+ const pathNode = importSpec.childForFieldName('path');
309
+ if (!pathNode)
310
+ continue;
311
+ let path = code.substring(pathNode.startIndex, pathNode.endIndex);
312
+ path = path.replace(/^["']|["']$/g, '');
313
+ const nameNode = importSpec.childForFieldName('name');
314
+ const alias = nameNode ? code.substring(nameNode.startIndex, nameNode.endIndex) : undefined;
315
+ imports.push({
316
+ path,
317
+ alias,
318
+ location: this.nodeToLocation(importSpec, filePath),
319
+ });
320
+ }
321
+ }
322
+ return imports;
323
+ }
324
+ extractStruct(name, structNode, packageName, code, filePath) {
325
+ const fields = [];
326
+ const embeddedTypes = [];
327
+ const fieldDeclList = structNode.namedChildren.find((child) => child.type === 'field_declaration_list');
328
+ if (!fieldDeclList) {
329
+ return {
330
+ name,
331
+ packageName,
332
+ fields: [],
333
+ methods: [],
334
+ embeddedTypes: [],
335
+ exported: this.isExported(name),
336
+ location: this.nodeToLocation(structNode, filePath),
337
+ };
338
+ }
339
+ const fieldDecls = fieldDeclList.children.filter((child) => child.type === 'field_declaration');
340
+ for (const fieldDecl of fieldDecls) {
341
+ const namedChildren = fieldDecl.namedChildren;
342
+ if (namedChildren.length === 0)
343
+ continue;
344
+ const typeNode = namedChildren[namedChildren.length - 1];
345
+ const typeText = code.substring(typeNode.startIndex, typeNode.endIndex);
346
+ const nameNodes = namedChildren
347
+ .slice(0, -1)
348
+ .filter((child) => child.type === 'field_identifier' || child.type === 'identifier');
349
+ if (nameNodes.length === 0) {
350
+ embeddedTypes.push(typeText);
351
+ }
352
+ else {
353
+ for (const nameNode of nameNodes) {
354
+ const fieldName = code.substring(nameNode.startIndex, nameNode.endIndex);
355
+ const tagNode = fieldDecl.children.find((child) => child.type === 'raw_string_literal');
356
+ const tag = tagNode
357
+ ? code.substring(tagNode.startIndex, tagNode.endIndex).replace(/`/g, '')
358
+ : undefined;
359
+ fields.push({
360
+ name: fieldName,
361
+ type: typeText,
362
+ tag,
363
+ exported: this.isExported(fieldName),
364
+ location: this.nodeToLocation(fieldDecl, filePath),
365
+ });
366
+ }
367
+ }
368
+ }
369
+ return {
370
+ name,
371
+ packageName,
372
+ fields,
373
+ methods: [],
374
+ embeddedTypes,
375
+ exported: this.isExported(name),
376
+ location: this.nodeToLocation(structNode, filePath),
377
+ };
378
+ }
379
+ extractInterface(name, interfaceNode, packageName, code, filePath) {
380
+ const methods = [];
381
+ const embeddedInterfaces = [];
382
+ const methodElems = interfaceNode.namedChildren.filter((child) => child.type === 'method_elem');
383
+ for (const methodElem of methodElems) {
384
+ const nameNode = methodElem.childForFieldName('name');
385
+ if (!nameNode) {
386
+ const firstChild = methodElem.namedChild(0);
387
+ if (firstChild && firstChild.type === 'type_identifier') {
388
+ embeddedInterfaces.push(code.substring(firstChild.startIndex, firstChild.endIndex));
389
+ }
390
+ continue;
391
+ }
392
+ const methodName = code.substring(nameNode.startIndex, nameNode.endIndex);
393
+ const parameters = this.extractParametersFromElem(methodElem, code, filePath);
394
+ const returnTypes = this.extractReturnTypesFromElem(methodElem, code);
395
+ methods.push({
396
+ name: methodName,
397
+ parameters,
398
+ returnTypes,
399
+ exported: this.isExported(methodName),
400
+ location: this.nodeToLocation(methodElem, filePath),
401
+ });
402
+ }
403
+ return {
404
+ name,
405
+ packageName,
406
+ methods,
407
+ embeddedInterfaces,
408
+ exported: this.isExported(name),
409
+ location: this.nodeToLocation(interfaceNode, filePath),
410
+ };
411
+ }
412
+ extractParametersFromElem(node, code, filePath) {
413
+ const parameters = [];
414
+ const paramList = node.namedChildren.find((child) => child.type === 'parameter_list');
415
+ if (!paramList)
416
+ return parameters;
417
+ const paramDecls = paramList.namedChildren.filter((child) => child.type === 'parameter_declaration');
418
+ for (const paramDecl of paramDecls) {
419
+ const nameList = paramDecl.namedChildren.filter((child) => child.type === 'identifier');
420
+ const typeNode = paramDecl.namedChildren.find((child) => child.type !== 'identifier');
421
+ if (!typeNode)
422
+ continue;
423
+ const typeText = code.substring(typeNode.startIndex, typeNode.endIndex);
424
+ if (nameList.length === 0) {
425
+ parameters.push({
426
+ name: '',
427
+ type: typeText,
428
+ exported: false,
429
+ location: this.nodeToLocation(paramDecl, filePath),
430
+ });
431
+ }
432
+ else {
433
+ for (const nameNode of nameList) {
434
+ const paramName = code.substring(nameNode.startIndex, nameNode.endIndex);
435
+ parameters.push({
436
+ name: paramName,
437
+ type: typeText,
438
+ exported: false,
439
+ location: this.nodeToLocation(paramDecl, filePath),
440
+ });
441
+ }
442
+ }
443
+ }
444
+ return parameters;
445
+ }
446
+ extractReturnTypesFromElem(node, code) {
447
+ const returnTypes = [];
448
+ const children = node.namedChildren;
449
+ let foundParamList = false;
450
+ for (const child of children) {
451
+ if (child.type === 'parameter_list' && !foundParamList) {
452
+ foundParamList = true;
453
+ continue;
454
+ }
455
+ if (foundParamList) {
456
+ if (child.type === 'parameter_list') {
457
+ const types = child.namedChildren.filter((c) => c.type === 'parameter_declaration');
458
+ for (const typeDecl of types) {
459
+ const typeNode = typeDecl.namedChildren.find((c) => c.type !== 'identifier');
460
+ if (typeNode) {
461
+ returnTypes.push(code.substring(typeNode.startIndex, typeNode.endIndex));
462
+ }
463
+ }
464
+ }
465
+ else {
466
+ returnTypes.push(code.substring(child.startIndex, child.endIndex));
467
+ }
468
+ }
469
+ }
470
+ return returnTypes;
471
+ }
472
+ extractMethod(methodDecl, code, filePath, options) {
473
+ const nameNode = methodDecl.childForFieldName('name');
474
+ if (!nameNode)
475
+ return null;
476
+ const methodName = code.substring(nameNode.startIndex, nameNode.endIndex);
477
+ const receiverNode = methodDecl.childForFieldName('receiver');
478
+ let receiverType;
479
+ if (receiverNode) {
480
+ const paramList = receiverNode.descendantsOfType('parameter_declaration');
481
+ if (paramList.length > 0) {
482
+ const typeNode = paramList[0].childForFieldName('type');
483
+ if (typeNode) {
484
+ receiverType = code.substring(typeNode.startIndex, typeNode.endIndex).replace(/^\*/, '');
485
+ }
486
+ }
487
+ }
488
+ const parameters = this.extractParameters(methodDecl, code, filePath);
489
+ const returnTypes = this.extractReturnTypes(methodDecl, code);
490
+ let body;
491
+ if (options?.extractBodies) {
492
+ const blockNode = methodDecl.childForFieldName('body');
493
+ if (blockNode) {
494
+ if (options.selectiveExtraction) {
495
+ if (this.shouldExtractBody(blockNode, code)) {
496
+ body = this.extractFunctionBody(blockNode, code, filePath);
497
+ }
498
+ }
499
+ else {
500
+ body = this.extractFunctionBody(blockNode, code, filePath);
501
+ }
502
+ }
503
+ }
504
+ return {
505
+ name: methodName,
506
+ receiverType,
507
+ parameters,
508
+ returnTypes,
509
+ exported: this.isExported(methodName),
510
+ location: this.nodeToLocation(methodDecl, filePath),
511
+ body,
512
+ };
513
+ }
514
+ extractParameters(node, code, filePath) {
515
+ const parameters = [];
516
+ const paramsNode = node.childForFieldName('parameters');
517
+ if (!paramsNode)
518
+ return parameters;
519
+ const paramDecls = paramsNode.descendantsOfType('parameter_declaration');
520
+ for (const paramDecl of paramDecls) {
521
+ const nameList = paramDecl.childForFieldName('name');
522
+ const typeNode = paramDecl.childForFieldName('type');
523
+ if (!typeNode)
524
+ continue;
525
+ const typeText = code.substring(typeNode.startIndex, typeNode.endIndex);
526
+ if (!nameList) {
527
+ parameters.push({
528
+ name: '',
529
+ type: typeText,
530
+ exported: false,
531
+ location: this.nodeToLocation(paramDecl, filePath),
532
+ });
533
+ }
534
+ else {
535
+ const nameNodes = nameList.namedChildren;
536
+ for (const nameNode of nameNodes) {
537
+ const paramName = code.substring(nameNode.startIndex, nameNode.endIndex);
538
+ parameters.push({
539
+ name: paramName,
540
+ type: typeText,
541
+ exported: false,
542
+ location: this.nodeToLocation(paramDecl, filePath),
543
+ });
544
+ }
545
+ }
546
+ }
547
+ return parameters;
548
+ }
549
+ extractReturnTypes(node, code) {
550
+ const resultNode = node.childForFieldName('result');
551
+ if (!resultNode)
552
+ return [];
553
+ if (resultNode.type !== 'parameter_list') {
554
+ return [code.substring(resultNode.startIndex, resultNode.endIndex)];
555
+ }
556
+ const returnTypes = [];
557
+ const paramDecls = resultNode.descendantsOfType('parameter_declaration');
558
+ for (const paramDecl of paramDecls) {
559
+ const typeNode = paramDecl.childForFieldName('type');
560
+ if (typeNode) {
561
+ returnTypes.push(code.substring(typeNode.startIndex, typeNode.endIndex));
562
+ }
563
+ }
564
+ return returnTypes;
565
+ }
566
+ isExported(name) {
567
+ return name.length > 0 && name[0] === name[0].toUpperCase();
568
+ }
569
+ nodeToLocation(node, filePath) {
570
+ return {
571
+ file: filePath,
572
+ startLine: node.startPosition.row + 1,
573
+ endLine: node.endPosition.row + 1,
574
+ startColumn: node.startPosition.column,
575
+ endColumn: node.endPosition.column,
576
+ };
577
+ }
578
+ }
579
+ //# sourceMappingURL=tree-sitter-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-sitter-bridge.js","sourceRoot":"","sources":["../../../src/plugins/golang/tree-sitter-bridge.ts"],"names":[],"mappings":"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"}