cotx-engine 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 (501) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +103 -0
  3. package/dist/commands/compile.d.ts +3 -0
  4. package/dist/commands/compile.js +93 -0
  5. package/dist/commands/compile.js.map +1 -0
  6. package/dist/commands/context.d.ts +1 -0
  7. package/dist/commands/context.js +98 -0
  8. package/dist/commands/context.js.map +1 -0
  9. package/dist/commands/diff.d.ts +19 -0
  10. package/dist/commands/diff.js +127 -0
  11. package/dist/commands/diff.js.map +1 -0
  12. package/dist/commands/impact.d.ts +3 -0
  13. package/dist/commands/impact.js +91 -0
  14. package/dist/commands/impact.js.map +1 -0
  15. package/dist/commands/init.d.ts +1 -0
  16. package/dist/commands/init.js +13 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/lint.d.ts +13 -0
  19. package/dist/commands/lint.js +290 -0
  20. package/dist/commands/lint.js.map +1 -0
  21. package/dist/commands/map.d.ts +6 -0
  22. package/dist/commands/map.js +409 -0
  23. package/dist/commands/map.js.map +1 -0
  24. package/dist/commands/migrate.d.ts +16 -0
  25. package/dist/commands/migrate.js +150 -0
  26. package/dist/commands/migrate.js.map +1 -0
  27. package/dist/commands/query.d.ts +3 -0
  28. package/dist/commands/query.js +47 -0
  29. package/dist/commands/query.js.map +1 -0
  30. package/dist/commands/rename.d.ts +5 -0
  31. package/dist/commands/rename.js +163 -0
  32. package/dist/commands/rename.js.map +1 -0
  33. package/dist/commands/snapshot.d.ts +6 -0
  34. package/dist/commands/snapshot.js +48 -0
  35. package/dist/commands/snapshot.js.map +1 -0
  36. package/dist/commands/status.d.ts +1 -0
  37. package/dist/commands/status.js +72 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/update.d.ts +8 -0
  40. package/dist/commands/update.js +163 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/commands/write.d.ts +6 -0
  43. package/dist/commands/write.js +221 -0
  44. package/dist/commands/write.js.map +1 -0
  45. package/dist/compiler/auto-describe.d.ts +13 -0
  46. package/dist/compiler/auto-describe.js +91 -0
  47. package/dist/compiler/auto-describe.js.map +1 -0
  48. package/dist/compiler/concept-compiler.d.ts +21 -0
  49. package/dist/compiler/concept-compiler.js +125 -0
  50. package/dist/compiler/concept-compiler.js.map +1 -0
  51. package/dist/compiler/contract-compiler.d.ts +16 -0
  52. package/dist/compiler/contract-compiler.js +90 -0
  53. package/dist/compiler/contract-compiler.js.map +1 -0
  54. package/dist/compiler/delta-detector.d.ts +8 -0
  55. package/dist/compiler/delta-detector.js +34 -0
  56. package/dist/compiler/delta-detector.js.map +1 -0
  57. package/dist/compiler/flow-compiler.d.ts +18 -0
  58. package/dist/compiler/flow-compiler.js +69 -0
  59. package/dist/compiler/flow-compiler.js.map +1 -0
  60. package/dist/compiler/module-compiler.d.ts +18 -0
  61. package/dist/compiler/module-compiler.js +420 -0
  62. package/dist/compiler/module-compiler.js.map +1 -0
  63. package/dist/compiler/stale-detector.d.ts +22 -0
  64. package/dist/compiler/stale-detector.js +79 -0
  65. package/dist/compiler/stale-detector.js.map +1 -0
  66. package/dist/config/ignore-service.d.ts +26 -0
  67. package/dist/config/ignore-service.js +366 -0
  68. package/dist/config/ignore-service.js.map +1 -0
  69. package/dist/core/analysis/cluster-enricher.d.ts +38 -0
  70. package/dist/core/analysis/cluster-enricher.js +169 -0
  71. package/dist/core/analysis/cluster-enricher.js.map +1 -0
  72. package/dist/core/analysis/community-processor.d.ts +39 -0
  73. package/dist/core/analysis/community-processor.js +319 -0
  74. package/dist/core/analysis/community-processor.js.map +1 -0
  75. package/dist/core/analysis/process-processor.d.ts +51 -0
  76. package/dist/core/analysis/process-processor.js +318 -0
  77. package/dist/core/analysis/process-processor.js.map +1 -0
  78. package/dist/core/bridge.d.ts +15 -0
  79. package/dist/core/bridge.js +63 -0
  80. package/dist/core/bridge.js.map +1 -0
  81. package/dist/core/export/json-exporter.d.ts +43 -0
  82. package/dist/core/export/json-exporter.js +13 -0
  83. package/dist/core/export/json-exporter.js.map +1 -0
  84. package/dist/core/graph/graph.d.ts +2 -0
  85. package/dist/core/graph/graph.js +79 -0
  86. package/dist/core/graph/graph.js.map +1 -0
  87. package/dist/core/graph/types.d.ts +25 -0
  88. package/dist/core/graph/types.js +2 -0
  89. package/dist/core/graph/types.js.map +1 -0
  90. package/dist/core/parser/ast-cache.d.ts +11 -0
  91. package/dist/core/parser/ast-cache.js +36 -0
  92. package/dist/core/parser/ast-cache.js.map +1 -0
  93. package/dist/core/parser/call-processor.d.ts +105 -0
  94. package/dist/core/parser/call-processor.js +1807 -0
  95. package/dist/core/parser/call-processor.js.map +1 -0
  96. package/dist/core/parser/call-routing.d.ts +55 -0
  97. package/dist/core/parser/call-routing.js +113 -0
  98. package/dist/core/parser/call-routing.js.map +1 -0
  99. package/dist/core/parser/call-sites/extract-language-call-site.d.ts +10 -0
  100. package/dist/core/parser/call-sites/extract-language-call-site.js +23 -0
  101. package/dist/core/parser/call-sites/extract-language-call-site.js.map +1 -0
  102. package/dist/core/parser/call-sites/java.d.ts +9 -0
  103. package/dist/core/parser/call-sites/java.js +31 -0
  104. package/dist/core/parser/call-sites/java.js.map +1 -0
  105. package/dist/core/parser/cluster-enricher.d.ts +38 -0
  106. package/dist/core/parser/cluster-enricher.js +169 -0
  107. package/dist/core/parser/cluster-enricher.js.map +1 -0
  108. package/dist/core/parser/community-processor.d.ts +39 -0
  109. package/dist/core/parser/community-processor.js +321 -0
  110. package/dist/core/parser/community-processor.js.map +1 -0
  111. package/dist/core/parser/constants.d.ts +16 -0
  112. package/dist/core/parser/constants.js +17 -0
  113. package/dist/core/parser/constants.js.map +1 -0
  114. package/dist/core/parser/entry-point-scoring.d.ts +57 -0
  115. package/dist/core/parser/entry-point-scoring.js +377 -0
  116. package/dist/core/parser/entry-point-scoring.js.map +1 -0
  117. package/dist/core/parser/export-detection.d.ts +57 -0
  118. package/dist/core/parser/export-detection.js +234 -0
  119. package/dist/core/parser/export-detection.js.map +1 -0
  120. package/dist/core/parser/field-extractor.d.ts +34 -0
  121. package/dist/core/parser/field-extractor.js +33 -0
  122. package/dist/core/parser/field-extractor.js.map +1 -0
  123. package/dist/core/parser/field-extractors/configs/c-cpp.d.ts +16 -0
  124. package/dist/core/parser/field-extractors/configs/c-cpp.js +129 -0
  125. package/dist/core/parser/field-extractors/configs/c-cpp.js.map +1 -0
  126. package/dist/core/parser/field-extractors/configs/csharp.d.ts +15 -0
  127. package/dist/core/parser/field-extractors/configs/csharp.js +129 -0
  128. package/dist/core/parser/field-extractors/configs/csharp.js.map +1 -0
  129. package/dist/core/parser/field-extractors/configs/dart.d.ts +12 -0
  130. package/dist/core/parser/field-extractors/configs/dart.js +93 -0
  131. package/dist/core/parser/field-extractors/configs/dart.js.map +1 -0
  132. package/dist/core/parser/field-extractors/configs/go.d.ts +12 -0
  133. package/dist/core/parser/field-extractors/configs/go.js +66 -0
  134. package/dist/core/parser/field-extractors/configs/go.js.map +1 -0
  135. package/dist/core/parser/field-extractors/configs/helpers.d.ts +40 -0
  136. package/dist/core/parser/field-extractors/configs/helpers.js +118 -0
  137. package/dist/core/parser/field-extractors/configs/helpers.js.map +1 -0
  138. package/dist/core/parser/field-extractors/configs/jvm.d.ts +17 -0
  139. package/dist/core/parser/field-extractors/configs/jvm.js +139 -0
  140. package/dist/core/parser/field-extractors/configs/jvm.js.map +1 -0
  141. package/dist/core/parser/field-extractors/configs/php.d.ts +12 -0
  142. package/dist/core/parser/field-extractors/configs/php.js +69 -0
  143. package/dist/core/parser/field-extractors/configs/php.js.map +1 -0
  144. package/dist/core/parser/field-extractors/configs/python.d.ts +15 -0
  145. package/dist/core/parser/field-extractors/configs/python.js +92 -0
  146. package/dist/core/parser/field-extractors/configs/python.js.map +1 -0
  147. package/dist/core/parser/field-extractors/configs/ruby.d.ts +15 -0
  148. package/dist/core/parser/field-extractors/configs/ruby.js +68 -0
  149. package/dist/core/parser/field-extractors/configs/ruby.js.map +1 -0
  150. package/dist/core/parser/field-extractors/configs/rust.d.ts +12 -0
  151. package/dist/core/parser/field-extractors/configs/rust.js +58 -0
  152. package/dist/core/parser/field-extractors/configs/rust.js.map +1 -0
  153. package/dist/core/parser/field-extractors/configs/swift.d.ts +15 -0
  154. package/dist/core/parser/field-extractors/configs/swift.js +75 -0
  155. package/dist/core/parser/field-extractors/configs/swift.js.map +1 -0
  156. package/dist/core/parser/field-extractors/configs/typescript-javascript.d.ts +14 -0
  157. package/dist/core/parser/field-extractors/configs/typescript-javascript.js +72 -0
  158. package/dist/core/parser/field-extractors/configs/typescript-javascript.js.map +1 -0
  159. package/dist/core/parser/field-extractors/generic.d.ts +61 -0
  160. package/dist/core/parser/field-extractors/generic.js +170 -0
  161. package/dist/core/parser/field-extractors/generic.js.map +1 -0
  162. package/dist/core/parser/field-extractors/typescript.d.ts +16 -0
  163. package/dist/core/parser/field-extractors/typescript.js +167 -0
  164. package/dist/core/parser/field-extractors/typescript.js.map +1 -0
  165. package/dist/core/parser/field-types.d.ts +46 -0
  166. package/dist/core/parser/field-types.js +2 -0
  167. package/dist/core/parser/field-types.js.map +1 -0
  168. package/dist/core/parser/filesystem-walker.d.ts +28 -0
  169. package/dist/core/parser/filesystem-walker.js +82 -0
  170. package/dist/core/parser/filesystem-walker.js.map +1 -0
  171. package/dist/core/parser/framework-detection.d.ts +149 -0
  172. package/dist/core/parser/framework-detection.js +782 -0
  173. package/dist/core/parser/framework-detection.js.map +1 -0
  174. package/dist/core/parser/heritage-processor.d.ts +52 -0
  175. package/dist/core/parser/heritage-processor.js +339 -0
  176. package/dist/core/parser/heritage-processor.js.map +1 -0
  177. package/dist/core/parser/import-processor.d.ts +33 -0
  178. package/dist/core/parser/import-processor.js +382 -0
  179. package/dist/core/parser/import-processor.js.map +1 -0
  180. package/dist/core/parser/import-resolvers/csharp.d.ts +19 -0
  181. package/dist/core/parser/import-resolvers/csharp.js +132 -0
  182. package/dist/core/parser/import-resolvers/csharp.js.map +1 -0
  183. package/dist/core/parser/import-resolvers/dart.d.ts +7 -0
  184. package/dist/core/parser/import-resolvers/dart.js +45 -0
  185. package/dist/core/parser/import-resolvers/dart.js.map +1 -0
  186. package/dist/core/parser/import-resolvers/go.d.ts +18 -0
  187. package/dist/core/parser/import-resolvers/go.js +62 -0
  188. package/dist/core/parser/import-resolvers/go.js.map +1 -0
  189. package/dist/core/parser/import-resolvers/jvm.d.ts +32 -0
  190. package/dist/core/parser/import-resolvers/jvm.js +160 -0
  191. package/dist/core/parser/import-resolvers/jvm.js.map +1 -0
  192. package/dist/core/parser/import-resolvers/php.d.ts +25 -0
  193. package/dist/core/parser/import-resolvers/php.js +81 -0
  194. package/dist/core/parser/import-resolvers/php.js.map +1 -0
  195. package/dist/core/parser/import-resolvers/python.d.ts +25 -0
  196. package/dist/core/parser/import-resolvers/python.js +85 -0
  197. package/dist/core/parser/import-resolvers/python.js.map +1 -0
  198. package/dist/core/parser/import-resolvers/ruby.d.ts +15 -0
  199. package/dist/core/parser/import-resolvers/ruby.js +21 -0
  200. package/dist/core/parser/import-resolvers/ruby.js.map +1 -0
  201. package/dist/core/parser/import-resolvers/rust.d.ts +18 -0
  202. package/dist/core/parser/import-resolvers/rust.js +119 -0
  203. package/dist/core/parser/import-resolvers/rust.js.map +1 -0
  204. package/dist/core/parser/import-resolvers/standard.d.ts +36 -0
  205. package/dist/core/parser/import-resolvers/standard.js +144 -0
  206. package/dist/core/parser/import-resolvers/standard.js.map +1 -0
  207. package/dist/core/parser/import-resolvers/swift.d.ts +7 -0
  208. package/dist/core/parser/import-resolvers/swift.js +25 -0
  209. package/dist/core/parser/import-resolvers/swift.js.map +1 -0
  210. package/dist/core/parser/import-resolvers/types.d.ts +44 -0
  211. package/dist/core/parser/import-resolvers/types.js +7 -0
  212. package/dist/core/parser/import-resolvers/types.js.map +1 -0
  213. package/dist/core/parser/import-resolvers/utils.d.ts +35 -0
  214. package/dist/core/parser/import-resolvers/utils.js +150 -0
  215. package/dist/core/parser/import-resolvers/utils.js.map +1 -0
  216. package/dist/core/parser/import-resolvers/vue.d.ts +8 -0
  217. package/dist/core/parser/import-resolvers/vue.js +10 -0
  218. package/dist/core/parser/import-resolvers/vue.js.map +1 -0
  219. package/dist/core/parser/language-config.d.ts +52 -0
  220. package/dist/core/parser/language-config.js +182 -0
  221. package/dist/core/parser/language-config.js.map +1 -0
  222. package/dist/core/parser/language-provider.d.ts +126 -0
  223. package/dist/core/parser/language-provider.js +25 -0
  224. package/dist/core/parser/language-provider.js.map +1 -0
  225. package/dist/core/parser/languages/c-cpp.d.ts +12 -0
  226. package/dist/core/parser/languages/c-cpp.js +312 -0
  227. package/dist/core/parser/languages/c-cpp.js.map +1 -0
  228. package/dist/core/parser/languages/csharp.d.ts +8 -0
  229. package/dist/core/parser/languages/csharp.js +127 -0
  230. package/dist/core/parser/languages/csharp.js.map +1 -0
  231. package/dist/core/parser/languages/dart.d.ts +12 -0
  232. package/dist/core/parser/languages/dart.js +91 -0
  233. package/dist/core/parser/languages/dart.js.map +1 -0
  234. package/dist/core/parser/languages/go.d.ts +11 -0
  235. package/dist/core/parser/languages/go.js +32 -0
  236. package/dist/core/parser/languages/go.js.map +1 -0
  237. package/dist/core/parser/languages/index.d.ts +38 -0
  238. package/dist/core/parser/languages/index.js +63 -0
  239. package/dist/core/parser/languages/index.js.map +1 -0
  240. package/dist/core/parser/languages/java.d.ts +9 -0
  241. package/dist/core/parser/languages/java.js +33 -0
  242. package/dist/core/parser/languages/java.js.map +1 -0
  243. package/dist/core/parser/languages/kotlin.d.ts +9 -0
  244. package/dist/core/parser/languages/kotlin.js +112 -0
  245. package/dist/core/parser/languages/kotlin.js.map +1 -0
  246. package/dist/core/parser/languages/php.d.ts +8 -0
  247. package/dist/core/parser/languages/php.js +226 -0
  248. package/dist/core/parser/languages/php.js.map +1 -0
  249. package/dist/core/parser/languages/python.d.ts +12 -0
  250. package/dist/core/parser/languages/python.js +66 -0
  251. package/dist/core/parser/languages/python.js.map +1 -0
  252. package/dist/core/parser/languages/ruby.d.ts +9 -0
  253. package/dist/core/parser/languages/ruby.js +109 -0
  254. package/dist/core/parser/languages/ruby.js.map +1 -0
  255. package/dist/core/parser/languages/rust.d.ts +12 -0
  256. package/dist/core/parser/languages/rust.js +121 -0
  257. package/dist/core/parser/languages/rust.js.map +1 -0
  258. package/dist/core/parser/languages/swift.d.ts +12 -0
  259. package/dist/core/parser/languages/swift.js +233 -0
  260. package/dist/core/parser/languages/swift.js.map +1 -0
  261. package/dist/core/parser/languages/typescript.d.ts +11 -0
  262. package/dist/core/parser/languages/typescript.js +169 -0
  263. package/dist/core/parser/languages/typescript.js.map +1 -0
  264. package/dist/core/parser/languages/vue.d.ts +13 -0
  265. package/dist/core/parser/languages/vue.js +65 -0
  266. package/dist/core/parser/languages/vue.js.map +1 -0
  267. package/dist/core/parser/markdown-processor.d.ts +17 -0
  268. package/dist/core/parser/markdown-processor.js +125 -0
  269. package/dist/core/parser/markdown-processor.js.map +1 -0
  270. package/dist/core/parser/method-extractors/configs/c-cpp.d.ts +3 -0
  271. package/dist/core/parser/method-extractors/configs/c-cpp.js +276 -0
  272. package/dist/core/parser/method-extractors/configs/c-cpp.js.map +1 -0
  273. package/dist/core/parser/method-extractors/configs/csharp.d.ts +2 -0
  274. package/dist/core/parser/method-extractors/configs/csharp.js +243 -0
  275. package/dist/core/parser/method-extractors/configs/csharp.js.map +1 -0
  276. package/dist/core/parser/method-extractors/configs/dart.d.ts +2 -0
  277. package/dist/core/parser/method-extractors/configs/dart.js +263 -0
  278. package/dist/core/parser/method-extractors/configs/dart.js.map +1 -0
  279. package/dist/core/parser/method-extractors/configs/go.d.ts +2 -0
  280. package/dist/core/parser/method-extractors/configs/go.js +120 -0
  281. package/dist/core/parser/method-extractors/configs/go.js.map +1 -0
  282. package/dist/core/parser/method-extractors/configs/jvm.d.ts +3 -0
  283. package/dist/core/parser/method-extractors/configs/jvm.js +309 -0
  284. package/dist/core/parser/method-extractors/configs/jvm.js.map +1 -0
  285. package/dist/core/parser/method-extractors/configs/php.d.ts +2 -0
  286. package/dist/core/parser/method-extractors/configs/php.js +243 -0
  287. package/dist/core/parser/method-extractors/configs/php.js.map +1 -0
  288. package/dist/core/parser/method-extractors/configs/python.d.ts +2 -0
  289. package/dist/core/parser/method-extractors/configs/python.js +219 -0
  290. package/dist/core/parser/method-extractors/configs/python.js.map +1 -0
  291. package/dist/core/parser/method-extractors/configs/ruby.d.ts +2 -0
  292. package/dist/core/parser/method-extractors/configs/ruby.js +201 -0
  293. package/dist/core/parser/method-extractors/configs/ruby.js.map +1 -0
  294. package/dist/core/parser/method-extractors/configs/rust.d.ts +2 -0
  295. package/dist/core/parser/method-extractors/configs/rust.js +120 -0
  296. package/dist/core/parser/method-extractors/configs/rust.js.map +1 -0
  297. package/dist/core/parser/method-extractors/configs/swift.d.ts +2 -0
  298. package/dist/core/parser/method-extractors/configs/swift.js +191 -0
  299. package/dist/core/parser/method-extractors/configs/swift.js.map +1 -0
  300. package/dist/core/parser/method-extractors/configs/typescript-javascript.d.ts +3 -0
  301. package/dist/core/parser/method-extractors/configs/typescript-javascript.js +231 -0
  302. package/dist/core/parser/method-extractors/configs/typescript-javascript.js.map +1 -0
  303. package/dist/core/parser/method-extractors/generic.d.ts +11 -0
  304. package/dist/core/parser/method-extractors/generic.js +162 -0
  305. package/dist/core/parser/method-extractors/generic.js.map +1 -0
  306. package/dist/core/parser/method-types.d.ts +110 -0
  307. package/dist/core/parser/method-types.js +2 -0
  308. package/dist/core/parser/method-types.js.map +1 -0
  309. package/dist/core/parser/mro-processor.d.ts +46 -0
  310. package/dist/core/parser/mro-processor.js +677 -0
  311. package/dist/core/parser/mro-processor.js.map +1 -0
  312. package/dist/core/parser/named-binding-processor.d.ts +18 -0
  313. package/dist/core/parser/named-binding-processor.js +43 -0
  314. package/dist/core/parser/named-binding-processor.js.map +1 -0
  315. package/dist/core/parser/named-bindings/csharp.d.ts +3 -0
  316. package/dist/core/parser/named-bindings/csharp.js +38 -0
  317. package/dist/core/parser/named-bindings/csharp.js.map +1 -0
  318. package/dist/core/parser/named-bindings/java.d.ts +3 -0
  319. package/dist/core/parser/named-bindings/java.js +30 -0
  320. package/dist/core/parser/named-bindings/java.js.map +1 -0
  321. package/dist/core/parser/named-bindings/kotlin.d.ts +3 -0
  322. package/dist/core/parser/named-bindings/kotlin.js +37 -0
  323. package/dist/core/parser/named-bindings/kotlin.js.map +1 -0
  324. package/dist/core/parser/named-bindings/php.d.ts +3 -0
  325. package/dist/core/parser/named-bindings/php.js +62 -0
  326. package/dist/core/parser/named-bindings/php.js.map +1 -0
  327. package/dist/core/parser/named-bindings/python.d.ts +3 -0
  328. package/dist/core/parser/named-bindings/python.js +50 -0
  329. package/dist/core/parser/named-bindings/python.js.map +1 -0
  330. package/dist/core/parser/named-bindings/rust.d.ts +3 -0
  331. package/dist/core/parser/named-bindings/rust.js +67 -0
  332. package/dist/core/parser/named-bindings/rust.js.map +1 -0
  333. package/dist/core/parser/named-bindings/types.d.ts +16 -0
  334. package/dist/core/parser/named-bindings/types.js +7 -0
  335. package/dist/core/parser/named-bindings/types.js.map +1 -0
  336. package/dist/core/parser/named-bindings/typescript.d.ts +3 -0
  337. package/dist/core/parser/named-bindings/typescript.js +59 -0
  338. package/dist/core/parser/named-bindings/typescript.js.map +1 -0
  339. package/dist/core/parser/parsing-processor.d.ts +23 -0
  340. package/dist/core/parser/parsing-processor.js +464 -0
  341. package/dist/core/parser/parsing-processor.js.map +1 -0
  342. package/dist/core/parser/pipeline.d.ts +17 -0
  343. package/dist/core/parser/pipeline.js +1405 -0
  344. package/dist/core/parser/pipeline.js.map +1 -0
  345. package/dist/core/parser/process-processor.d.ts +51 -0
  346. package/dist/core/parser/process-processor.js +318 -0
  347. package/dist/core/parser/process-processor.js.map +1 -0
  348. package/dist/core/parser/resolution-context.d.ts +58 -0
  349. package/dist/core/parser/resolution-context.js +136 -0
  350. package/dist/core/parser/resolution-context.js.map +1 -0
  351. package/dist/core/parser/route-extractors/expo.d.ts +1 -0
  352. package/dist/core/parser/route-extractors/expo.js +37 -0
  353. package/dist/core/parser/route-extractors/expo.js.map +1 -0
  354. package/dist/core/parser/route-extractors/middleware.d.ts +47 -0
  355. package/dist/core/parser/route-extractors/middleware.js +168 -0
  356. package/dist/core/parser/route-extractors/middleware.js.map +1 -0
  357. package/dist/core/parser/route-extractors/nextjs.d.ts +3 -0
  358. package/dist/core/parser/route-extractors/nextjs.js +77 -0
  359. package/dist/core/parser/route-extractors/nextjs.js.map +1 -0
  360. package/dist/core/parser/route-extractors/php.d.ts +7 -0
  361. package/dist/core/parser/route-extractors/php.js +23 -0
  362. package/dist/core/parser/route-extractors/php.js.map +1 -0
  363. package/dist/core/parser/route-extractors/response-shapes.d.ts +20 -0
  364. package/dist/core/parser/route-extractors/response-shapes.js +295 -0
  365. package/dist/core/parser/route-extractors/response-shapes.js.map +1 -0
  366. package/dist/core/parser/structure-processor.d.ts +2 -0
  367. package/dist/core/parser/structure-processor.js +37 -0
  368. package/dist/core/parser/structure-processor.js.map +1 -0
  369. package/dist/core/parser/symbol-table.d.ts +79 -0
  370. package/dist/core/parser/symbol-table.js +116 -0
  371. package/dist/core/parser/symbol-table.js.map +1 -0
  372. package/dist/core/parser/tree-sitter-queries.d.ts +16 -0
  373. package/dist/core/parser/tree-sitter-queries.js +1180 -0
  374. package/dist/core/parser/tree-sitter-queries.js.map +1 -0
  375. package/dist/core/parser/type-env.d.ts +81 -0
  376. package/dist/core/parser/type-env.js +1048 -0
  377. package/dist/core/parser/type-env.js.map +1 -0
  378. package/dist/core/parser/type-extractors/c-cpp.d.ts +7 -0
  379. package/dist/core/parser/type-extractors/c-cpp.js +533 -0
  380. package/dist/core/parser/type-extractors/c-cpp.js.map +1 -0
  381. package/dist/core/parser/type-extractors/csharp.d.ts +2 -0
  382. package/dist/core/parser/type-extractors/csharp.js +584 -0
  383. package/dist/core/parser/type-extractors/csharp.js.map +1 -0
  384. package/dist/core/parser/type-extractors/dart.d.ts +15 -0
  385. package/dist/core/parser/type-extractors/dart.js +370 -0
  386. package/dist/core/parser/type-extractors/dart.js.map +1 -0
  387. package/dist/core/parser/type-extractors/go.d.ts +2 -0
  388. package/dist/core/parser/type-extractors/go.js +514 -0
  389. package/dist/core/parser/type-extractors/go.js.map +1 -0
  390. package/dist/core/parser/type-extractors/jvm.d.ts +3 -0
  391. package/dist/core/parser/type-extractors/jvm.js +857 -0
  392. package/dist/core/parser/type-extractors/jvm.js.map +1 -0
  393. package/dist/core/parser/type-extractors/php.d.ts +2 -0
  394. package/dist/core/parser/type-extractors/php.js +535 -0
  395. package/dist/core/parser/type-extractors/php.js.map +1 -0
  396. package/dist/core/parser/type-extractors/python.d.ts +2 -0
  397. package/dist/core/parser/type-extractors/python.js +475 -0
  398. package/dist/core/parser/type-extractors/python.js.map +1 -0
  399. package/dist/core/parser/type-extractors/ruby.d.ts +2 -0
  400. package/dist/core/parser/type-extractors/ruby.js +378 -0
  401. package/dist/core/parser/type-extractors/ruby.js.map +1 -0
  402. package/dist/core/parser/type-extractors/rust.d.ts +2 -0
  403. package/dist/core/parser/type-extractors/rust.js +516 -0
  404. package/dist/core/parser/type-extractors/rust.js.map +1 -0
  405. package/dist/core/parser/type-extractors/shared.d.ts +131 -0
  406. package/dist/core/parser/type-extractors/shared.js +797 -0
  407. package/dist/core/parser/type-extractors/shared.js.map +1 -0
  408. package/dist/core/parser/type-extractors/swift.d.ts +2 -0
  409. package/dist/core/parser/type-extractors/swift.js +485 -0
  410. package/dist/core/parser/type-extractors/swift.js.map +1 -0
  411. package/dist/core/parser/type-extractors/types.d.ts +172 -0
  412. package/dist/core/parser/type-extractors/types.js +2 -0
  413. package/dist/core/parser/type-extractors/types.js.map +1 -0
  414. package/dist/core/parser/type-extractors/typescript.d.ts +2 -0
  415. package/dist/core/parser/type-extractors/typescript.js +662 -0
  416. package/dist/core/parser/type-extractors/typescript.js.map +1 -0
  417. package/dist/core/parser/utils/ast-helpers.d.ts +73 -0
  418. package/dist/core/parser/utils/ast-helpers.js +415 -0
  419. package/dist/core/parser/utils/ast-helpers.js.map +1 -0
  420. package/dist/core/parser/utils/call-analysis.d.ts +75 -0
  421. package/dist/core/parser/utils/call-analysis.js +575 -0
  422. package/dist/core/parser/utils/call-analysis.js.map +1 -0
  423. package/dist/core/parser/utils/event-loop.d.ts +5 -0
  424. package/dist/core/parser/utils/event-loop.js +6 -0
  425. package/dist/core/parser/utils/event-loop.js.map +1 -0
  426. package/dist/core/parser/utils/method-props.d.ts +8 -0
  427. package/dist/core/parser/utils/method-props.js +39 -0
  428. package/dist/core/parser/utils/method-props.js.map +1 -0
  429. package/dist/core/parser/utils/verbose.d.ts +1 -0
  430. package/dist/core/parser/utils/verbose.js +8 -0
  431. package/dist/core/parser/utils/verbose.js.map +1 -0
  432. package/dist/core/parser/vue-sfc-extractor.d.ts +44 -0
  433. package/dist/core/parser/vue-sfc-extractor.js +95 -0
  434. package/dist/core/parser/vue-sfc-extractor.js.map +1 -0
  435. package/dist/core/parser/workers/parse-worker.d.ts +171 -0
  436. package/dist/core/parser/workers/parse-worker.js +1724 -0
  437. package/dist/core/parser/workers/parse-worker.js.map +1 -0
  438. package/dist/core/parser/workers/worker-pool.d.ts +16 -0
  439. package/dist/core/parser/workers/worker-pool.js +124 -0
  440. package/dist/core/parser/workers/worker-pool.js.map +1 -0
  441. package/dist/core/shared/graph-types.d.ts +61 -0
  442. package/dist/core/shared/graph-types.js +5 -0
  443. package/dist/core/shared/graph-types.js.map +1 -0
  444. package/dist/core/shared/index.d.ts +4 -0
  445. package/dist/core/shared/index.js +4 -0
  446. package/dist/core/shared/index.js.map +1 -0
  447. package/dist/core/shared/language-detection.d.ts +22 -0
  448. package/dist/core/shared/language-detection.js +137 -0
  449. package/dist/core/shared/language-detection.js.map +1 -0
  450. package/dist/core/shared/languages.d.ts +23 -0
  451. package/dist/core/shared/languages.js +25 -0
  452. package/dist/core/shared/languages.js.map +1 -0
  453. package/dist/core/shared/pipeline.d.ts +15 -0
  454. package/dist/core/shared/pipeline.js +5 -0
  455. package/dist/core/shared/pipeline.js.map +1 -0
  456. package/dist/core/tree-sitter/parser-loader.d.ts +5 -0
  457. package/dist/core/tree-sitter/parser-loader.js +71 -0
  458. package/dist/core/tree-sitter/parser-loader.js.map +1 -0
  459. package/dist/index.d.ts +2 -0
  460. package/dist/index.js +132 -0
  461. package/dist/index.js.map +1 -0
  462. package/dist/lib/hash.d.ts +1 -0
  463. package/dist/lib/hash.js +6 -0
  464. package/dist/lib/hash.js.map +1 -0
  465. package/dist/lib/naming.d.ts +12 -0
  466. package/dist/lib/naming.js +28 -0
  467. package/dist/lib/naming.js.map +1 -0
  468. package/dist/lib/utils.d.ts +1 -0
  469. package/dist/lib/utils.js +4 -0
  470. package/dist/lib/utils.js.map +1 -0
  471. package/dist/mcp/server.d.ts +26 -0
  472. package/dist/mcp/server.js +282 -0
  473. package/dist/mcp/server.js.map +1 -0
  474. package/dist/mcp/tools.d.ts +37 -0
  475. package/dist/mcp/tools.js +650 -0
  476. package/dist/mcp/tools.js.map +1 -0
  477. package/dist/query/bm25.d.ts +19 -0
  478. package/dist/query/bm25.js +60 -0
  479. package/dist/query/bm25.js.map +1 -0
  480. package/dist/query/graph-index.d.ts +40 -0
  481. package/dist/query/graph-index.js +178 -0
  482. package/dist/query/graph-index.js.map +1 -0
  483. package/dist/store/derived-index.d.ts +4 -0
  484. package/dist/store/derived-index.js +68 -0
  485. package/dist/store/derived-index.js.map +1 -0
  486. package/dist/store/meta.d.ts +1 -0
  487. package/dist/store/meta.js +3 -0
  488. package/dist/store/meta.js.map +1 -0
  489. package/dist/store/schema.d.ts +135 -0
  490. package/dist/store/schema.js +2 -0
  491. package/dist/store/schema.js.map +1 -0
  492. package/dist/store/store.d.ts +49 -0
  493. package/dist/store/store.js +254 -0
  494. package/dist/store/store.js.map +1 -0
  495. package/dist/types/pipeline.d.ts +12 -0
  496. package/dist/types/pipeline.js +2 -0
  497. package/dist/types/pipeline.js.map +1 -0
  498. package/package.json +69 -0
  499. package/skills/cotx-enrich/SKILL.md +59 -0
  500. package/vendor/leiden/index.cjs +355 -0
  501. package/vendor/leiden/utils.cjs +392 -0
@@ -0,0 +1,516 @@
1
+ import { extractSimpleTypeName, extractVarName, hasTypeAnnotation, unwrapAwait, extractGenericTypeArgs, resolveIterableElementType, methodToTypeArgPosition, extractElementTypeFromString, } from './shared.js';
2
+ const DECLARATION_NODE_TYPES = new Set(['let_declaration', 'let_condition']);
3
+ /** Walk up the AST to find the enclosing impl block and extract the implementing type name. */
4
+ const findEnclosingImplType = (node) => {
5
+ let current = node.parent;
6
+ while (current) {
7
+ if (current.type === 'impl_item') {
8
+ // The 'type' field holds the implementing type (e.g., `impl User { ... }`)
9
+ const typeNode = current.childForFieldName('type');
10
+ if (typeNode)
11
+ return extractSimpleTypeName(typeNode);
12
+ }
13
+ current = current.parent;
14
+ }
15
+ return undefined;
16
+ };
17
+ /**
18
+ * Extract the type name from a struct_pattern's 'type' field.
19
+ * Handles both simple `User { .. }` and scoped `Message::Data { .. }`.
20
+ */
21
+ const extractStructPatternType = (structPattern) => {
22
+ const typeNode = structPattern.childForFieldName('type');
23
+ if (!typeNode)
24
+ return undefined;
25
+ return extractSimpleTypeName(typeNode);
26
+ };
27
+ /**
28
+ * Recursively scan a pattern tree for captured_pattern nodes (x @ StructType { .. })
29
+ * and extract variable → type bindings from them.
30
+ */
31
+ const extractCapturedPatternBindings = (pattern, env, depth = 0) => {
32
+ if (depth > 50)
33
+ return;
34
+ if (pattern.type === 'captured_pattern') {
35
+ // captured_pattern: identifier @ inner_pattern
36
+ // The first named child is the identifier, followed by the inner pattern.
37
+ const nameNode = pattern.firstNamedChild;
38
+ if (!nameNode || nameNode.type !== 'identifier')
39
+ return;
40
+ // Find the struct_pattern child — that gives us the type
41
+ for (let i = 0; i < pattern.namedChildCount; i++) {
42
+ const child = pattern.namedChild(i);
43
+ if (child?.type === 'struct_pattern') {
44
+ const typeName = extractStructPatternType(child);
45
+ if (typeName)
46
+ env.set(nameNode.text, typeName);
47
+ return;
48
+ }
49
+ }
50
+ return;
51
+ }
52
+ // Recurse into tuple_struct_pattern children to find nested captured_patterns
53
+ // e.g., Some(user @ User { .. })
54
+ if (pattern.type === 'tuple_struct_pattern') {
55
+ for (let i = 0; i < pattern.namedChildCount; i++) {
56
+ const child = pattern.namedChild(i);
57
+ if (child)
58
+ extractCapturedPatternBindings(child, env, depth + 1);
59
+ }
60
+ }
61
+ };
62
+ /** Rust: let x: Foo = ... | if let / while let pattern bindings */
63
+ const extractDeclaration = (node, env) => {
64
+ if (node.type === 'let_condition') {
65
+ // if let / while let: extract type bindings from pattern matching.
66
+ //
67
+ // Supported patterns:
68
+ // - captured_pattern: `if let user @ User { .. } = expr` → user: User
69
+ // - tuple_struct_pattern with nested captured_pattern:
70
+ // `if let Some(user @ User { .. }) = expr` → user: User
71
+ //
72
+ // NOT supported (requires generic unwrapping — Phase 3):
73
+ // - `if let Some(x) = opt` where opt: Option<T> → x: T
74
+ //
75
+ // struct_pattern without capture (`if let User { name } = expr`)
76
+ // destructures fields — individual field types are unknown without
77
+ // field-type resolution, so no bindings are extracted.
78
+ const pattern = node.childForFieldName('pattern');
79
+ if (!pattern)
80
+ return;
81
+ extractCapturedPatternBindings(pattern, env);
82
+ return;
83
+ }
84
+ // Standard let_declaration: let x: Foo = ...
85
+ const pattern = node.childForFieldName('pattern');
86
+ const typeNode = node.childForFieldName('type');
87
+ if (!pattern || !typeNode)
88
+ return;
89
+ const varName = extractVarName(pattern);
90
+ const typeName = extractSimpleTypeName(typeNode);
91
+ if (varName && typeName)
92
+ env.set(varName, typeName);
93
+ };
94
+ /** Rust: let x = User::new(), let x = User::default(), or let x = User { ... } */
95
+ const extractInitializer = (node, env, classNames) => {
96
+ // Skip if there's an explicit type annotation — Tier 0 already handled it
97
+ if (node.childForFieldName('type') !== null)
98
+ return;
99
+ const pattern = node.childForFieldName('pattern');
100
+ const value = node.childForFieldName('value');
101
+ if (!pattern || !value)
102
+ return;
103
+ // Rust struct literal: let user = User { name: "alice", age: 30 }
104
+ // tree-sitter-rust: struct_expression with 'name' field holding the type
105
+ if (value.type === 'struct_expression') {
106
+ const typeNode = value.childForFieldName('name');
107
+ if (!typeNode)
108
+ return;
109
+ const rawType = extractSimpleTypeName(typeNode);
110
+ if (!rawType)
111
+ return;
112
+ // Resolve Self to the actual struct/enum name from the enclosing impl block
113
+ const typeName = rawType === 'Self' ? findEnclosingImplType(node) : rawType;
114
+ const varName = extractVarName(pattern);
115
+ if (varName && typeName)
116
+ env.set(varName, typeName);
117
+ return;
118
+ }
119
+ // Unit struct instantiation: let svc = UserService; (bare identifier, no braces or call)
120
+ if (value.type === 'identifier' && classNames.has(value.text)) {
121
+ const varName = extractVarName(pattern);
122
+ if (varName)
123
+ env.set(varName, value.text);
124
+ return;
125
+ }
126
+ if (value.type !== 'call_expression')
127
+ return;
128
+ const func = value.childForFieldName('function');
129
+ if (!func || func.type !== 'scoped_identifier')
130
+ return;
131
+ const nameField = func.childForFieldName('name');
132
+ // Only match ::new() and ::default() — the two idiomatic Rust constructors.
133
+ // Deliberately excludes ::from(), ::with_capacity(), etc. to avoid false positives
134
+ // (e.g. String::from("x") is not necessarily the "String" type we want for method resolution).
135
+ if (!nameField || (nameField.text !== 'new' && nameField.text !== 'default'))
136
+ return;
137
+ const pathField = func.childForFieldName('path');
138
+ if (!pathField)
139
+ return;
140
+ const rawType = extractSimpleTypeName(pathField);
141
+ if (!rawType)
142
+ return;
143
+ // Resolve Self to the actual struct/enum name from the enclosing impl block
144
+ const typeName = rawType === 'Self' ? findEnclosingImplType(node) : rawType;
145
+ const varName = extractVarName(pattern);
146
+ if (varName && typeName)
147
+ env.set(varName, typeName);
148
+ };
149
+ /** Rust: parameter → pattern: type */
150
+ const extractParameter = (node, env) => {
151
+ let nameNode = null;
152
+ let typeNode = null;
153
+ if (node.type === 'parameter') {
154
+ nameNode = node.childForFieldName('pattern');
155
+ typeNode = node.childForFieldName('type');
156
+ }
157
+ else {
158
+ nameNode = node.childForFieldName('name') ?? node.childForFieldName('pattern');
159
+ typeNode = node.childForFieldName('type');
160
+ }
161
+ if (!nameNode || !typeNode)
162
+ return;
163
+ const varName = extractVarName(nameNode);
164
+ const typeName = extractSimpleTypeName(typeNode);
165
+ if (varName && typeName)
166
+ env.set(varName, typeName);
167
+ };
168
+ /** Rust: let user = get_user("alice") — let_declaration with call_expression value, no type annotation.
169
+ * Skips `let user: User = ...` (explicit type annotation — handled by extractDeclaration).
170
+ * Skips `let user = User::new()` (scoped_identifier callee named "new" — handled by extractInitializer).
171
+ * Unwraps `let mut user = get_user()` by looking inside mut_pattern for the inner identifier.
172
+ */
173
+ const scanConstructorBinding = (node) => {
174
+ if (node.type !== 'let_declaration')
175
+ return undefined;
176
+ if (hasTypeAnnotation(node))
177
+ return undefined;
178
+ let patternNode = node.childForFieldName('pattern');
179
+ if (!patternNode)
180
+ return undefined;
181
+ if (patternNode.type === 'mut_pattern') {
182
+ patternNode = patternNode.firstNamedChild;
183
+ if (!patternNode)
184
+ return undefined;
185
+ }
186
+ if (patternNode.type !== 'identifier')
187
+ return undefined;
188
+ // Unwrap `.await`: `let user = get_user().await` → await_expression wraps call_expression
189
+ const value = unwrapAwait(node.childForFieldName('value'));
190
+ if (!value || value.type !== 'call_expression')
191
+ return undefined;
192
+ const func = value.childForFieldName('function');
193
+ if (!func)
194
+ return undefined;
195
+ if (func.type === 'scoped_identifier') {
196
+ const methodName = func.lastNamedChild;
197
+ if (methodName?.text === 'new' || methodName?.text === 'default')
198
+ return undefined;
199
+ }
200
+ const calleeName = extractSimpleTypeName(func);
201
+ if (!calleeName)
202
+ return undefined;
203
+ return { varName: patternNode.text, calleeName };
204
+ };
205
+ /** Rust: let alias = u; → let_declaration with pattern + value fields.
206
+ * Also handles struct destructuring: `let Point { x, y } = p` → N fieldAccess items. */
207
+ const extractPendingAssignment = (node, scopeEnv) => {
208
+ if (node.type !== 'let_declaration')
209
+ return undefined;
210
+ const pattern = node.childForFieldName('pattern');
211
+ const value = node.childForFieldName('value');
212
+ if (!pattern || !value)
213
+ return undefined;
214
+ // Struct pattern destructuring: `let Point { x, y } = receiver`
215
+ // struct_pattern has a type child (struct name) and field_pattern children
216
+ if (pattern.type === 'struct_pattern' && value.type === 'identifier') {
217
+ const receiver = value.text;
218
+ const items = [];
219
+ for (let j = 0; j < pattern.namedChildCount; j++) {
220
+ const field = pattern.namedChild(j);
221
+ if (!field)
222
+ continue;
223
+ if (field.type === 'field_pattern') {
224
+ // `Point { x: local_x }` → field_pattern with name + pattern children
225
+ const nameNode = field.childForFieldName('name');
226
+ const patNode = field.childForFieldName('pattern');
227
+ if (nameNode && patNode) {
228
+ const fieldName = nameNode.text;
229
+ const varName = extractVarName(patNode);
230
+ if (varName && !scopeEnv.has(varName)) {
231
+ items.push({ kind: 'fieldAccess', lhs: varName, receiver, field: fieldName });
232
+ }
233
+ }
234
+ else if (nameNode) {
235
+ // Shorthand: `Point { x }` → field_pattern with only name (varName = fieldName)
236
+ const varName = nameNode.text;
237
+ if (!scopeEnv.has(varName)) {
238
+ items.push({ kind: 'fieldAccess', lhs: varName, receiver, field: varName });
239
+ }
240
+ }
241
+ }
242
+ }
243
+ if (items.length > 0)
244
+ return items;
245
+ return undefined;
246
+ }
247
+ const lhs = extractVarName(pattern);
248
+ if (!lhs || scopeEnv.has(lhs))
249
+ return undefined;
250
+ // Unwrap Rust .await: `let user = get_user().await` → call_expression
251
+ const unwrapped = unwrapAwait(value) ?? value;
252
+ if (unwrapped.type === 'identifier')
253
+ return { kind: 'copy', lhs, rhs: unwrapped.text };
254
+ // field_expression RHS → fieldAccess (a.field)
255
+ if (unwrapped.type === 'field_expression') {
256
+ const obj = unwrapped.firstNamedChild;
257
+ const field = unwrapped.lastNamedChild;
258
+ if (obj?.type === 'identifier' && field?.type === 'field_identifier') {
259
+ return { kind: 'fieldAccess', lhs, receiver: obj.text, field: field.text };
260
+ }
261
+ }
262
+ // call_expression RHS → callResult (simple calls only)
263
+ if (unwrapped.type === 'call_expression') {
264
+ const funcNode = unwrapped.childForFieldName('function');
265
+ if (funcNode?.type === 'identifier') {
266
+ return { kind: 'callResult', lhs, callee: funcNode.text };
267
+ }
268
+ }
269
+ // method_call_expression RHS → methodCallResult (receiver.method())
270
+ if (unwrapped.type === 'method_call_expression') {
271
+ const obj = unwrapped.firstNamedChild;
272
+ if (obj?.type === 'identifier') {
273
+ const methodNode = unwrapped.childForFieldName('name') ?? unwrapped.namedChild(1);
274
+ if (methodNode?.type === 'field_identifier') {
275
+ return { kind: 'methodCallResult', lhs, receiver: obj.text, method: methodNode.text };
276
+ }
277
+ }
278
+ }
279
+ return undefined;
280
+ };
281
+ /**
282
+ * Rust pattern binding extractor for `if let` / `while let` constructs that unwrap
283
+ * enum variants and introduce new typed variables.
284
+ *
285
+ * Supported patterns:
286
+ * - `if let Some(x) = opt` → x: T (opt: Option<T>, T already in scopeEnv via NULLABLE_WRAPPER_TYPES)
287
+ * - `if let Ok(x) = res` → x: T (res: Result<T, E>, T extracted from declarationTypeNodes)
288
+ *
289
+ * These complement the captured_pattern support in extractDeclaration (which handles
290
+ * `if let x @ Struct { .. } = expr` but NOT tuple struct unwrapping like Some(x) / Ok(x)).
291
+ *
292
+ * Conservative: returns undefined when:
293
+ * - The source variable's type is unknown (not in scopeEnv)
294
+ * - The wrapper is not a known single-unwrap variant (Some / Ok)
295
+ * - The value side is not a simple identifier
296
+ */
297
+ const extractPatternBinding = (node, scopeEnv, declarationTypeNodes, scope) => {
298
+ let patternNode = null;
299
+ let valueNode = null;
300
+ if (node.type === 'let_condition') {
301
+ patternNode = node.childForFieldName('pattern');
302
+ valueNode = node.childForFieldName('value');
303
+ }
304
+ else if (node.type === 'match_arm') {
305
+ // match_arm → pattern field is match_pattern wrapping the actual pattern
306
+ const matchPatternNode = node.childForFieldName('pattern');
307
+ // Unwrap match_pattern to get the tuple_struct_pattern inside
308
+ patternNode =
309
+ matchPatternNode?.type === 'match_pattern'
310
+ ? matchPatternNode.firstNamedChild
311
+ : matchPatternNode;
312
+ // source variable is in the parent match_expression's 'value' field
313
+ const matchExpr = node.parent?.parent; // match_arm → match_block → match_expression
314
+ if (matchExpr?.type === 'match_expression') {
315
+ valueNode = matchExpr.childForFieldName('value');
316
+ }
317
+ }
318
+ if (!patternNode || !valueNode)
319
+ return undefined;
320
+ // Only handle tuple_struct_pattern: Some(x) or Ok(x)
321
+ if (patternNode.type !== 'tuple_struct_pattern')
322
+ return undefined;
323
+ // Extract the wrapper type name: Some | Ok
324
+ const wrapperTypeNode = patternNode.childForFieldName('type');
325
+ if (!wrapperTypeNode)
326
+ return undefined;
327
+ const wrapperName = extractSimpleTypeName(wrapperTypeNode);
328
+ if (wrapperName !== 'Some' && wrapperName !== 'Ok' && wrapperName !== 'Err')
329
+ return undefined;
330
+ // Extract the inner variable name from the single child of the tuple_struct_pattern.
331
+ // `Some(x)` → the first named child after the type field is the identifier.
332
+ // tree-sitter-rust: tuple_struct_pattern has 'type' field + unnamed children for args.
333
+ let innerVar;
334
+ for (let i = 0; i < patternNode.namedChildCount; i++) {
335
+ const child = patternNode.namedChild(i);
336
+ if (!child)
337
+ continue;
338
+ // Skip the type node itself
339
+ if (child === wrapperTypeNode)
340
+ continue;
341
+ if (child.type === 'identifier') {
342
+ innerVar = child.text;
343
+ break;
344
+ }
345
+ }
346
+ if (!innerVar)
347
+ return undefined;
348
+ // The value must be a simple identifier so we can look it up in scopeEnv
349
+ const sourceVarName = valueNode.type === 'identifier' ? valueNode.text : undefined;
350
+ if (!sourceVarName)
351
+ return undefined;
352
+ // For `Some(x)`: Option<T> is already unwrapped to T in scopeEnv (via NULLABLE_WRAPPER_TYPES).
353
+ // For `Ok(x)`: Result<T, E> stores "Result" in scopeEnv — must use declarationTypeNodes.
354
+ if (wrapperName === 'Some') {
355
+ const innerType = scopeEnv.get(sourceVarName);
356
+ if (!innerType)
357
+ return undefined;
358
+ return { varName: innerVar, typeName: innerType };
359
+ }
360
+ // wrapperName === 'Ok' or 'Err': look up the Result<T, E> type AST node.
361
+ // Ok(x) → extract T (typeArgs[0]), Err(e) → extract E (typeArgs[1]).
362
+ const typeNodeKey = `${scope}\0${sourceVarName}`;
363
+ const typeAstNode = declarationTypeNodes.get(typeNodeKey);
364
+ if (!typeAstNode)
365
+ return undefined;
366
+ const typeArgs = extractGenericTypeArgs(typeAstNode);
367
+ const argIndex = wrapperName === 'Err' ? 1 : 0;
368
+ if (typeArgs.length < argIndex + 1)
369
+ return undefined;
370
+ return { varName: innerVar, typeName: typeArgs[argIndex] };
371
+ };
372
+ // --- For-loop Tier 1c ---
373
+ const FOR_LOOP_NODE_TYPES = new Set(['for_expression']);
374
+ /** Extract element type from a Rust type annotation AST node.
375
+ * Handles: generic_type (Vec<User>), reference_type (&[User]), array_type ([User; N]),
376
+ * slice_type ([User]). For call-graph purposes, strips references (&User → User). */
377
+ const extractRustElementTypeFromTypeNode = (typeNode, pos = 'last', depth = 0) => {
378
+ if (depth > 50)
379
+ return undefined;
380
+ // generic_type: Vec<User>, HashMap<K, V> — extract type arg based on position
381
+ if (typeNode.type === 'generic_type') {
382
+ const args = extractGenericTypeArgs(typeNode);
383
+ if (args.length >= 1)
384
+ return pos === 'first' ? args[0] : args[args.length - 1];
385
+ }
386
+ // reference_type: &[User] or &Vec<User> — unwrap the reference and recurse
387
+ if (typeNode.type === 'reference_type') {
388
+ const inner = typeNode.lastNamedChild;
389
+ if (inner)
390
+ return extractRustElementTypeFromTypeNode(inner, pos, depth + 1);
391
+ }
392
+ // array_type: [User; N] — element is the first child
393
+ if (typeNode.type === 'array_type') {
394
+ const elemNode = typeNode.firstNamedChild;
395
+ if (elemNode)
396
+ return extractSimpleTypeName(elemNode);
397
+ }
398
+ // slice_type: [User] — element is the first child
399
+ if (typeNode.type === 'slice_type') {
400
+ const elemNode = typeNode.firstNamedChild;
401
+ if (elemNode)
402
+ return extractSimpleTypeName(elemNode);
403
+ }
404
+ return undefined;
405
+ };
406
+ /** Walk up from a for-loop to the enclosing function_item and search parameters
407
+ * for one named `iterableName`. Returns the element type from its annotation. */
408
+ const findRustParamElementType = (iterableName, startNode, pos = 'last') => {
409
+ let current = startNode.parent;
410
+ while (current) {
411
+ if (current.type === 'function_item') {
412
+ const paramsNode = current.childForFieldName('parameters');
413
+ if (paramsNode) {
414
+ for (let i = 0; i < paramsNode.namedChildCount; i++) {
415
+ const param = paramsNode.namedChild(i);
416
+ if (!param || param.type !== 'parameter')
417
+ continue;
418
+ const nameNode = param.childForFieldName('pattern');
419
+ if (!nameNode)
420
+ continue;
421
+ // Unwrap reference patterns: &users, &mut users
422
+ let identNode = nameNode;
423
+ if (identNode.type === 'reference_pattern') {
424
+ identNode = identNode.lastNamedChild ?? identNode;
425
+ }
426
+ if (identNode.type === 'mut_pattern') {
427
+ identNode = identNode.firstNamedChild ?? identNode;
428
+ }
429
+ if (identNode.text !== iterableName)
430
+ continue;
431
+ const typeNode = param.childForFieldName('type');
432
+ if (typeNode)
433
+ return extractRustElementTypeFromTypeNode(typeNode, pos);
434
+ }
435
+ }
436
+ break;
437
+ }
438
+ current = current.parent;
439
+ }
440
+ return undefined;
441
+ };
442
+ /** Rust: for user in &users where users has a known container type.
443
+ * Unwraps reference_expression (&users, &mut users) to get the iterable name. */
444
+ const extractForLoopBinding = (node, { scopeEnv, declarationTypeNodes, scope, returnTypeLookup }) => {
445
+ if (node.type !== 'for_expression')
446
+ return;
447
+ const patternNode = node.childForFieldName('pattern');
448
+ const valueNode = node.childForFieldName('value');
449
+ if (!patternNode || !valueNode)
450
+ return;
451
+ // Extract iterable name + method — may be &users, users, or users.iter()/keys()/values()
452
+ let iterableName;
453
+ let methodName;
454
+ let callExprElementType;
455
+ if (valueNode.type === 'reference_expression') {
456
+ const inner = valueNode.lastNamedChild;
457
+ if (inner?.type === 'identifier')
458
+ iterableName = inner.text;
459
+ }
460
+ else if (valueNode.type === 'identifier') {
461
+ iterableName = valueNode.text;
462
+ }
463
+ else if (valueNode.type === 'field_expression') {
464
+ const prop = valueNode.lastNamedChild;
465
+ if (prop)
466
+ iterableName = prop.text;
467
+ }
468
+ else if (valueNode.type === 'call_expression') {
469
+ const funcExpr = valueNode.childForFieldName('function');
470
+ if (funcExpr?.type === 'field_expression') {
471
+ // users.iter() → field_expression > identifier + field_identifier
472
+ const obj = funcExpr.firstNamedChild;
473
+ if (obj?.type === 'identifier')
474
+ iterableName = obj.text;
475
+ // Extract method name: iter, keys, values, into_iter, etc.
476
+ const field = funcExpr.lastNamedChild;
477
+ if (field?.type === 'field_identifier')
478
+ methodName = field.text;
479
+ }
480
+ else if (funcExpr?.type === 'identifier') {
481
+ // Direct function call: for user in get_users()
482
+ const rawReturn = returnTypeLookup.lookupRawReturnType(funcExpr.text);
483
+ if (rawReturn)
484
+ callExprElementType = extractElementTypeFromString(rawReturn);
485
+ }
486
+ }
487
+ if (!iterableName && !callExprElementType)
488
+ return;
489
+ let elementType;
490
+ if (callExprElementType) {
491
+ elementType = callExprElementType;
492
+ }
493
+ else {
494
+ const containerTypeName = scopeEnv.get(iterableName);
495
+ const typeArgPos = methodToTypeArgPosition(methodName, containerTypeName);
496
+ elementType = resolveIterableElementType(iterableName, node, scopeEnv, declarationTypeNodes, scope, extractRustElementTypeFromTypeNode, findRustParamElementType, typeArgPos);
497
+ }
498
+ if (!elementType)
499
+ return;
500
+ const loopVarName = extractVarName(patternNode);
501
+ if (loopVarName)
502
+ scopeEnv.set(loopVarName, elementType);
503
+ };
504
+ export const typeConfig = {
505
+ declarationNodeTypes: DECLARATION_NODE_TYPES,
506
+ forLoopNodeTypes: FOR_LOOP_NODE_TYPES,
507
+ patternBindingNodeTypes: new Set(['let_condition', 'match_arm']),
508
+ extractDeclaration,
509
+ extractInitializer,
510
+ extractParameter,
511
+ scanConstructorBinding,
512
+ extractForLoopBinding,
513
+ extractPendingAssignment,
514
+ extractPatternBinding,
515
+ };
516
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../../src/core/parser/type-extractors/rust.ts"],"names":[],"mappings":"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"}