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,62 @@
1
+ /**
2
+ * Go package import resolution.
3
+ * Handles Go module path-based package imports.
4
+ */
5
+ import { SupportedLanguages } from '../../shared/index.js';
6
+ import { resolveStandard } from './standard.js';
7
+ /**
8
+ * Extract the package directory suffix from a Go import path.
9
+ * Returns the suffix string (e.g., "/internal/auth/") or null if invalid.
10
+ */
11
+ export function resolveGoPackageDir(importPath, goModule) {
12
+ if (!importPath.startsWith(goModule.modulePath))
13
+ return null;
14
+ const relativePkg = importPath.slice(goModule.modulePath.length + 1);
15
+ if (!relativePkg)
16
+ return null;
17
+ return '/' + relativePkg + '/';
18
+ }
19
+ /**
20
+ * Resolve a Go internal package import to all .go files in the package directory.
21
+ * Returns an array of file paths.
22
+ */
23
+ export function resolveGoPackage(importPath, goModule, normalizedFileList, allFileList) {
24
+ if (!importPath.startsWith(goModule.modulePath))
25
+ return [];
26
+ // Strip module path to get relative package path
27
+ const relativePkg = importPath.slice(goModule.modulePath.length + 1); // e.g., "internal/auth"
28
+ if (!relativePkg)
29
+ return [];
30
+ const pkgSuffix = '/' + relativePkg + '/';
31
+ const matches = [];
32
+ for (let i = 0; i < normalizedFileList.length; i++) {
33
+ // Prepend '/' so paths like "internal/auth/service.go" match suffix "/internal/auth/"
34
+ const normalized = '/' + normalizedFileList[i];
35
+ // File must be directly in the package directory (not a subdirectory)
36
+ if (normalized.includes(pkgSuffix) &&
37
+ normalized.endsWith('.go') &&
38
+ !normalized.endsWith('_test.go')) {
39
+ const afterPkg = normalized.substring(normalized.indexOf(pkgSuffix) + pkgSuffix.length);
40
+ if (!afterPkg.includes('/')) {
41
+ matches.push(allFileList[i]);
42
+ }
43
+ }
44
+ }
45
+ return matches;
46
+ }
47
+ /** Go: package-level imports via go.mod module path. */
48
+ export function resolveGoImport(rawImportPath, filePath, ctx) {
49
+ const goModule = ctx.configs.goModule;
50
+ if (goModule && rawImportPath.startsWith(goModule.modulePath)) {
51
+ const pkgSuffix = resolveGoPackageDir(rawImportPath, goModule);
52
+ if (pkgSuffix) {
53
+ const pkgFiles = resolveGoPackage(rawImportPath, goModule, ctx.normalizedFileList, ctx.allFileList);
54
+ if (pkgFiles.length > 0) {
55
+ return { kind: 'package', files: pkgFiles, dirSuffix: pkgSuffix };
56
+ }
57
+ }
58
+ // Fall through if no files found (package might be external)
59
+ }
60
+ return resolveStandard(rawImportPath, filePath, ctx, SupportedLanguages.Go);
61
+ }
62
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../src/core/parser/import-resolvers/go.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * JVM import resolution (Java + Kotlin).
3
+ * Handles wildcard imports, member/static imports, and Kotlin-specific patterns.
4
+ */
5
+ import type { SuffixIndex } from './utils.js';
6
+ import type { SyntaxNode } from '../utils/ast-helpers.js';
7
+ import type { ImportResult, ResolveCtx } from './types.js';
8
+ /** Kotlin file extensions for JVM resolver reuse */
9
+ export declare const KOTLIN_EXTENSIONS: readonly string[];
10
+ /**
11
+ * Append .* to a Kotlin import path if the AST has a wildcard_import sibling node.
12
+ * Pure function — returns a new string without mutating the input.
13
+ */
14
+ export declare const appendKotlinWildcard: (importPath: string, importNode: SyntaxNode) => string;
15
+ /**
16
+ * Resolve a JVM wildcard import (com.example.*) to all matching files.
17
+ * Works for both Java (.java) and Kotlin (.kt, .kts).
18
+ */
19
+ export declare function resolveJvmWildcard(importPath: string, normalizedFileList: string[], allFileList: string[], extensions: readonly string[], index?: SuffixIndex): string[];
20
+ /**
21
+ * Try to resolve a JVM member/static import by stripping the member name.
22
+ * Java: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
23
+ * Kotlin: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
24
+ */
25
+ export declare function resolveJvmMemberImport(importPath: string, normalizedFileList: string[], allFileList: string[], extensions: readonly string[], index?: SuffixIndex): string | null;
26
+ /** Java: JVM wildcard -> member import -> standard fallthrough */
27
+ export declare function resolveJavaImport(rawImportPath: string, filePath: string, ctx: ResolveCtx): ImportResult;
28
+ /**
29
+ * Kotlin: JVM wildcard/member with Java-interop fallback -> top-level function imports -> standard.
30
+ * Kotlin can import from .kt/.kts files OR from .java files (Java interop).
31
+ */
32
+ export declare function resolveKotlinImport(rawImportPath: string, filePath: string, ctx: ResolveCtx): ImportResult;
@@ -0,0 +1,160 @@
1
+ /**
2
+ * JVM import resolution (Java + Kotlin).
3
+ * Handles wildcard imports, member/static imports, and Kotlin-specific patterns.
4
+ */
5
+ import { SupportedLanguages } from '../../shared/index.js';
6
+ import { resolveStandard } from './standard.js';
7
+ /** Kotlin file extensions for JVM resolver reuse */
8
+ export const KOTLIN_EXTENSIONS = ['.kt', '.kts'];
9
+ /**
10
+ * Append .* to a Kotlin import path if the AST has a wildcard_import sibling node.
11
+ * Pure function — returns a new string without mutating the input.
12
+ */
13
+ export const appendKotlinWildcard = (importPath, importNode) => {
14
+ for (let i = 0; i < importNode.childCount; i++) {
15
+ if (importNode.child(i)?.type === 'wildcard_import') {
16
+ return importPath.endsWith('.*') ? importPath : `${importPath}.*`;
17
+ }
18
+ }
19
+ return importPath;
20
+ };
21
+ /**
22
+ * Resolve a JVM wildcard import (com.example.*) to all matching files.
23
+ * Works for both Java (.java) and Kotlin (.kt, .kts).
24
+ */
25
+ export function resolveJvmWildcard(importPath, normalizedFileList, allFileList, extensions, index) {
26
+ // "com.example.util.*" -> "com/example/util"
27
+ const packagePath = importPath.slice(0, -2).replace(/\./g, '/');
28
+ if (index) {
29
+ const candidates = extensions.flatMap((ext) => index.getFilesInDir(packagePath, ext));
30
+ // Filter to only direct children (no subdirectories)
31
+ const packageSuffix = '/' + packagePath + '/';
32
+ const packagePrefix = packagePath + '/';
33
+ return candidates.filter((f) => {
34
+ const normalized = f.replace(/\\/g, '/');
35
+ // Match both nested (src/models/User.kt) and root-level (models/User.kt) packages
36
+ let afterPkg;
37
+ const idx = normalized.lastIndexOf(packageSuffix);
38
+ if (idx >= 0) {
39
+ afterPkg = normalized.substring(idx + packageSuffix.length);
40
+ }
41
+ else if (normalized.startsWith(packagePrefix)) {
42
+ afterPkg = normalized.substring(packagePrefix.length);
43
+ }
44
+ else {
45
+ return false;
46
+ }
47
+ return !afterPkg.includes('/');
48
+ });
49
+ }
50
+ // Fallback: linear scan
51
+ const packageSuffix = '/' + packagePath + '/';
52
+ const packagePrefix = packagePath + '/';
53
+ const matches = [];
54
+ for (let i = 0; i < normalizedFileList.length; i++) {
55
+ const normalized = normalizedFileList[i];
56
+ if (!extensions.some((ext) => normalized.endsWith(ext)))
57
+ continue;
58
+ // Match both nested (src/models/User.kt) and root-level (models/User.kt) packages
59
+ let afterPackage = null;
60
+ if (normalized.includes(packageSuffix)) {
61
+ afterPackage = normalized.substring(normalized.lastIndexOf(packageSuffix) + packageSuffix.length);
62
+ }
63
+ else if (normalized.startsWith(packagePrefix)) {
64
+ afterPackage = normalized.substring(packagePrefix.length);
65
+ }
66
+ if (afterPackage !== null && !afterPackage.includes('/')) {
67
+ matches.push(allFileList[i]);
68
+ }
69
+ }
70
+ return matches;
71
+ }
72
+ /**
73
+ * Try to resolve a JVM member/static import by stripping the member name.
74
+ * Java: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
75
+ * Kotlin: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
76
+ */
77
+ export function resolveJvmMemberImport(importPath, normalizedFileList, allFileList, extensions, index) {
78
+ // Member imports: com.example.Constants.VALUE or com.example.Constants.*
79
+ // The last segment is a member name if it starts with lowercase, is ALL_CAPS, or is a wildcard
80
+ const segments = importPath.split('.');
81
+ if (segments.length < 3)
82
+ return null;
83
+ const lastSeg = segments[segments.length - 1];
84
+ if (lastSeg === '*' || /^[a-z]/.test(lastSeg) || /^[A-Z_]+$/.test(lastSeg)) {
85
+ const classPath = segments.slice(0, -1).join('/');
86
+ for (const ext of extensions) {
87
+ const classSuffix = classPath + ext;
88
+ if (index) {
89
+ const result = index.get(classSuffix) || index.getInsensitive(classSuffix);
90
+ if (result)
91
+ return result;
92
+ }
93
+ else {
94
+ const fullSuffix = '/' + classSuffix;
95
+ for (let i = 0; i < normalizedFileList.length; i++) {
96
+ if (normalizedFileList[i].endsWith(fullSuffix) ||
97
+ normalizedFileList[i].toLowerCase().endsWith(fullSuffix.toLowerCase())) {
98
+ return allFileList[i];
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ /** Java: JVM wildcard -> member import -> standard fallthrough */
107
+ export function resolveJavaImport(rawImportPath, filePath, ctx) {
108
+ if (rawImportPath.endsWith('.*')) {
109
+ const matchedFiles = resolveJvmWildcard(rawImportPath, ctx.normalizedFileList, ctx.allFileList, ['.java'], ctx.index);
110
+ if (matchedFiles.length > 0)
111
+ return { kind: 'files', files: matchedFiles };
112
+ }
113
+ else {
114
+ const memberResolved = resolveJvmMemberImport(rawImportPath, ctx.normalizedFileList, ctx.allFileList, ['.java'], ctx.index);
115
+ if (memberResolved)
116
+ return { kind: 'files', files: [memberResolved] };
117
+ }
118
+ return resolveStandard(rawImportPath, filePath, ctx, SupportedLanguages.Java);
119
+ }
120
+ /**
121
+ * Kotlin: JVM wildcard/member with Java-interop fallback -> top-level function imports -> standard.
122
+ * Kotlin can import from .kt/.kts files OR from .java files (Java interop).
123
+ */
124
+ export function resolveKotlinImport(rawImportPath, filePath, ctx) {
125
+ if (rawImportPath.endsWith('.*')) {
126
+ const matchedFiles = resolveJvmWildcard(rawImportPath, ctx.normalizedFileList, ctx.allFileList, KOTLIN_EXTENSIONS, ctx.index);
127
+ if (matchedFiles.length === 0) {
128
+ const javaMatches = resolveJvmWildcard(rawImportPath, ctx.normalizedFileList, ctx.allFileList, ['.java'], ctx.index);
129
+ if (javaMatches.length > 0)
130
+ return { kind: 'files', files: javaMatches };
131
+ }
132
+ if (matchedFiles.length > 0)
133
+ return { kind: 'files', files: matchedFiles };
134
+ }
135
+ else {
136
+ let memberResolved = resolveJvmMemberImport(rawImportPath, ctx.normalizedFileList, ctx.allFileList, KOTLIN_EXTENSIONS, ctx.index);
137
+ if (!memberResolved) {
138
+ memberResolved = resolveJvmMemberImport(rawImportPath, ctx.normalizedFileList, ctx.allFileList, ['.java'], ctx.index);
139
+ }
140
+ if (memberResolved)
141
+ return { kind: 'files', files: [memberResolved] };
142
+ // Kotlin: top-level function imports (e.g. import models.getUser) have only 2 segments,
143
+ // which resolveJvmMemberImport skips (requires >=3). Fall back to package-directory scan
144
+ // for lowercase last segments (function/property imports). Uppercase last segments
145
+ // (class imports like models.User) fall through to standard suffix resolution.
146
+ const segments = rawImportPath.split('.');
147
+ const lastSeg = segments[segments.length - 1];
148
+ if (segments.length >= 2 && lastSeg[0] && lastSeg[0] === lastSeg[0].toLowerCase()) {
149
+ const pkgWildcard = segments.slice(0, -1).join('.') + '.*';
150
+ let dirFiles = resolveJvmWildcard(pkgWildcard, ctx.normalizedFileList, ctx.allFileList, KOTLIN_EXTENSIONS, ctx.index);
151
+ if (dirFiles.length === 0) {
152
+ dirFiles = resolveJvmWildcard(pkgWildcard, ctx.normalizedFileList, ctx.allFileList, ['.java'], ctx.index);
153
+ }
154
+ if (dirFiles.length > 0)
155
+ return { kind: 'files', files: dirFiles };
156
+ }
157
+ }
158
+ return resolveStandard(rawImportPath, filePath, ctx, SupportedLanguages.Kotlin);
159
+ }
160
+ //# sourceMappingURL=jvm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jvm.js","sourceRoot":"","sources":["../../../../src/core/parser/import-resolvers/jvm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,UAAsB,EAAU,EAAE;IACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACpD,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,kBAA4B,EAC5B,WAAqB,EACrB,UAA6B,EAC7B,KAAmB;IAEnB,6CAA6C;IAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACtF,qDAAqD;QACrD,MAAM,aAAa,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;QAC9C,MAAM,aAAa,GAAG,WAAW,GAAG,GAAG,CAAC;QACxC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzC,kFAAkF;YAClF,IAAI,QAAgB,CAAC;YACrB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;IAC9C,MAAM,aAAa,GAAG,WAAW,GAAG,GAAG,CAAC;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAClE,kFAAkF;QAClF,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,YAAY,GAAG,UAAU,CAAC,SAAS,CACjC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,MAAM,CAC7D,CAAC;QACJ,CAAC;aAAM,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,kBAA4B,EAC5B,WAAqB,EACrB,UAA6B,EAC7B,KAAmB;IAEnB,yEAAyE;IACzE,+FAA+F;IAC/F,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,SAAS,GAAG,GAAG,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBAC3E,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnD,IACE,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAC1C,kBAAkB,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EACtE,CAAC;wBACD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAC/B,aAAqB,EACrB,QAAgB,EAChB,GAAe;IAEf,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,kBAAkB,CACrC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,CAAC,OAAO,CAAC,EACT,GAAG,CAAC,KAAK,CACV,CAAC;QACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,sBAAsB,CAC3C,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,CAAC,OAAO,CAAC,EACT,GAAG,CAAC,KAAK,CACV,CAAC;QACF,IAAI,cAAc;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,eAAe,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,aAAqB,EACrB,QAAgB,EAChB,GAAe;IAEf,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,kBAAkB,CACrC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,iBAAiB,EACjB,GAAG,CAAC,KAAK,CACV,CAAC;QACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,kBAAkB,CACpC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,CAAC,OAAO,CAAC,EACT,GAAG,CAAC,KAAK,CACV,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC3E,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,IAAI,cAAc,GAAG,sBAAsB,CACzC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,iBAAiB,EACjB,GAAG,CAAC,KAAK,CACV,CAAC;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,sBAAsB,CACrC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,CAAC,OAAO,CAAC,EACT,GAAG,CAAC,KAAK,CACV,CAAC;QACJ,CAAC;QACD,IAAI,cAAc;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;QAEtE,wFAAwF;QACxF,yFAAyF;QACzF,mFAAmF;QACnF,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC3D,IAAI,QAAQ,GAAG,kBAAkB,CAC/B,WAAW,EACX,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,iBAAiB,EACjB,GAAG,CAAC,KAAK,CACV,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAQ,GAAG,kBAAkB,CAC3B,WAAW,EACX,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,CAAC,OAAO,CAAC,EACT,GAAG,CAAC,KAAK,CACV,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACrE,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * PHP PSR-4 import resolution.
3
+ * Handles use-statement resolution via composer.json autoload mappings.
4
+ */
5
+ import type { SuffixIndex } from './utils.js';
6
+ import type { ImportResult, ResolveCtx } from './types.js';
7
+ import type { ComposerConfig } from '../language-config.js';
8
+ /**
9
+ * Resolve a PHP use-statement import path using PSR-4 mappings (low-level helper).
10
+ * e.g. "App\Http\Controllers\UserController" -> "app/Http/Controllers/UserController.php"
11
+ *
12
+ * For function/constant imports (use function App\Models\getUser), the last
13
+ * segment is the symbol name, not a class name, so it may not map directly to
14
+ * a file. When PSR-4 class-style resolution fails, we fall back to scanning
15
+ * .php files in the namespace directory.
16
+ *
17
+ * NOTE: The function-import fallback returns the first matching .php file in the
18
+ * namespace directory. When multiple files exist in the same namespace directory,
19
+ * resolution is non-deterministic (depends on Set/index iteration order). This is
20
+ * a known limitation — PHP function imports cannot be resolved to a specific file
21
+ * without parsing all candidate files.
22
+ */
23
+ export declare function resolvePhpImportInternal(importPath: string, composerConfig: ComposerConfig | null, allFiles: Set<string>, normalizedFileList: string[], allFileList: string[], index?: SuffixIndex): string | null;
24
+ /** PHP: namespace-based resolution via composer.json PSR-4. */
25
+ export declare function resolvePhpImport(rawImportPath: string, _filePath: string, ctx: ResolveCtx): ImportResult;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * PHP PSR-4 import resolution.
3
+ * Handles use-statement resolution via composer.json autoload mappings.
4
+ */
5
+ import { suffixResolve } from './utils.js';
6
+ /** Get or compute the sorted PSR-4 entries (cached after first call). */
7
+ function getSortedPsr4(config) {
8
+ if (!config.psr4Sorted) {
9
+ const sorted = [...config.psr4.entries()].sort((a, b) => b[0].length - a[0].length);
10
+ config.psr4Sorted = sorted;
11
+ }
12
+ return config.psr4Sorted;
13
+ }
14
+ /**
15
+ * Resolve a PHP use-statement import path using PSR-4 mappings (low-level helper).
16
+ * e.g. "App\Http\Controllers\UserController" -> "app/Http/Controllers/UserController.php"
17
+ *
18
+ * For function/constant imports (use function App\Models\getUser), the last
19
+ * segment is the symbol name, not a class name, so it may not map directly to
20
+ * a file. When PSR-4 class-style resolution fails, we fall back to scanning
21
+ * .php files in the namespace directory.
22
+ *
23
+ * NOTE: The function-import fallback returns the first matching .php file in the
24
+ * namespace directory. When multiple files exist in the same namespace directory,
25
+ * resolution is non-deterministic (depends on Set/index iteration order). This is
26
+ * a known limitation — PHP function imports cannot be resolved to a specific file
27
+ * without parsing all candidate files.
28
+ */
29
+ export function resolvePhpImportInternal(importPath, composerConfig, allFiles, normalizedFileList, allFileList, index) {
30
+ // Normalize: replace backslashes with forward slashes
31
+ const normalized = importPath.replace(/\\/g, '/');
32
+ // Reject path traversal attempts (defense-in-depth — walker whitelist also prevents this)
33
+ if (normalized.includes('..'))
34
+ return null;
35
+ if (composerConfig) {
36
+ const sorted = getSortedPsr4(composerConfig);
37
+ for (const [nsPrefix, dirPrefix] of sorted) {
38
+ const nsPrefixSlash = nsPrefix.replace(/\\/g, '/');
39
+ if (normalized.startsWith(nsPrefixSlash + '/') || normalized === nsPrefixSlash) {
40
+ const remainder = normalized.slice(nsPrefixSlash.length).replace(/^\//, '');
41
+ // 1. Try class-style PSR-4: full path → file (e.g. App\Models\User → app/Models/User.php)
42
+ const filePath = dirPrefix + (remainder ? '/' + remainder : '') + '.php';
43
+ if (allFiles.has(filePath))
44
+ return filePath;
45
+ if (index) {
46
+ const result = index.getInsensitive(filePath);
47
+ if (result)
48
+ return result;
49
+ }
50
+ // 2. Function/constant fallback: strip last segment (symbol name), scan namespace directory.
51
+ // e.g. App\Models\getUser → directory app/Models/, find first .php file in that dir.
52
+ const lastSlash = remainder.lastIndexOf('/');
53
+ const nsDir = lastSlash >= 0 ? dirPrefix + '/' + remainder.slice(0, lastSlash) : dirPrefix;
54
+ // Prefer SuffixIndex directory lookup (O(log n + matches)) over linear scan
55
+ if (index) {
56
+ const candidates = index.getFilesInDir(nsDir, '.php');
57
+ if (candidates.length > 0)
58
+ return candidates[0];
59
+ }
60
+ // Fallback: linear scan (only when SuffixIndex unavailable)
61
+ const nsDirPrefix = nsDir.endsWith('/') ? nsDir : nsDir + '/';
62
+ for (const f of allFiles) {
63
+ if (f.startsWith(nsDirPrefix) &&
64
+ f.endsWith('.php') &&
65
+ !f.slice(nsDirPrefix.length).includes('/')) {
66
+ return f;
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ // Fallback: suffix matching (works without composer.json)
73
+ const pathParts = normalized.split('/').filter(Boolean);
74
+ return suffixResolve(pathParts, normalizedFileList, allFileList, index);
75
+ }
76
+ /** PHP: namespace-based resolution via composer.json PSR-4. */
77
+ export function resolvePhpImport(rawImportPath, _filePath, ctx) {
78
+ const resolved = resolvePhpImportInternal(rawImportPath, ctx.configs.composerConfig, ctx.allFilePaths, ctx.normalizedFileList, ctx.allFileList, ctx.index);
79
+ return resolved ? { kind: 'files', files: [resolved] } : null;
80
+ }
81
+ //# sourceMappingURL=php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.js","sourceRoot":"","sources":["../../../../src/core/parser/import-resolvers/php.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Python import resolution — PEP 328 relative imports and proximity-based bare imports.
3
+ * Import system spec: PEP 302 (original), PEP 451 (current).
4
+ */
5
+ import type { ImportResult, ResolveCtx } from './types.js';
6
+ /**
7
+ * Resolve a Python import to a file path (low-level helper).
8
+ *
9
+ * 1. Relative (PEP 328): `.module`, `..module` — 1 dot = current package, each extra dot goes up one level.
10
+ * 2. Proximity bare import: static heuristic — checks the importer's own directory first.
11
+ * Approximates the common case where co-located files find each other without an installed package.
12
+ * Single-segment only — multi-segment (e.g. `os.path`) falls through to suffixResolve.
13
+ * Checks package (__init__.py) before module (.py), matching CPython's finder order (PEP 451 §4).
14
+ * Coexistence of both is physically impossible (same name = file vs directory), so the order
15
+ * only matters for spec compliance.
16
+ * Note: implicit namespace packages (Python 3.3+, directory without __init__.py) are not handled.
17
+ *
18
+ * Returns null to let the caller fall through to suffixResolve.
19
+ */
20
+ export declare function resolvePythonImportInternal(currentFile: string, importPath: string, allFiles: Set<string>): string | null;
21
+ /**
22
+ * Python: relative imports (PEP 328) + proximity-based bare imports.
23
+ * Falls through to standard suffix resolution when proximity finds no match.
24
+ */
25
+ export declare function resolvePythonImport(rawImportPath: string, filePath: string, ctx: ResolveCtx): ImportResult;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Python import resolution — PEP 328 relative imports and proximity-based bare imports.
3
+ * Import system spec: PEP 302 (original), PEP 451 (current).
4
+ */
5
+ import { tryResolveWithExtensions } from './utils.js';
6
+ import { SupportedLanguages } from '../../shared/index.js';
7
+ import { resolveStandard } from './standard.js';
8
+ /**
9
+ * Resolve a Python import to a file path (low-level helper).
10
+ *
11
+ * 1. Relative (PEP 328): `.module`, `..module` — 1 dot = current package, each extra dot goes up one level.
12
+ * 2. Proximity bare import: static heuristic — checks the importer's own directory first.
13
+ * Approximates the common case where co-located files find each other without an installed package.
14
+ * Single-segment only — multi-segment (e.g. `os.path`) falls through to suffixResolve.
15
+ * Checks package (__init__.py) before module (.py), matching CPython's finder order (PEP 451 §4).
16
+ * Coexistence of both is physically impossible (same name = file vs directory), so the order
17
+ * only matters for spec compliance.
18
+ * Note: implicit namespace packages (Python 3.3+, directory without __init__.py) are not handled.
19
+ *
20
+ * Returns null to let the caller fall through to suffixResolve.
21
+ */
22
+ export function resolvePythonImportInternal(currentFile, importPath, allFiles) {
23
+ // Relative import — PEP 328 (https://peps.python.org/pep-0328/)
24
+ if (importPath.startsWith('.')) {
25
+ const dotMatch = importPath.match(/^(\.+)(.*)/);
26
+ if (!dotMatch)
27
+ return null;
28
+ const dotCount = dotMatch[1].length;
29
+ const modulePart = dotMatch[2];
30
+ const dirParts = currentFile.split('/').slice(0, -1);
31
+ // PEP 328: more dots than directory levels → beyond top-level package → invalid
32
+ if (dotCount - 1 > dirParts.length)
33
+ return null;
34
+ for (let i = 1; i < dotCount; i++)
35
+ dirParts.pop();
36
+ if (modulePart) {
37
+ dirParts.push(...modulePart.replace(/\./g, '/').split('/'));
38
+ }
39
+ return tryResolveWithExtensions(dirParts.join('/'), allFiles);
40
+ }
41
+ // Proximity bare import — single-segment only; package before module (PEP 451 §4)
42
+ const pathLike = importPath.replace(/\./g, '/');
43
+ if (pathLike.includes('/'))
44
+ return null;
45
+ // Normalize for Windows backslashes
46
+ const importerDir = currentFile.replace(/\\/g, '/').split('/').slice(0, -1).join('/');
47
+ if (!importerDir)
48
+ return null;
49
+ if (allFiles.has(`${importerDir}/${pathLike}/__init__.py`))
50
+ return `${importerDir}/${pathLike}/__init__.py`;
51
+ if (allFiles.has(`${importerDir}/${pathLike}.py`))
52
+ return `${importerDir}/${pathLike}.py`;
53
+ // Ancestor directory walk — Python resolves bare imports against sys.path entries,
54
+ // which typically includes the project root and package directories. Walk up from the
55
+ // importer's directory to find the module in an ancestor, preferring the closest match.
56
+ // This prevents cross-language misresolution (e.g., Python `from middleware import X`
57
+ // resolving to a TypeScript middleware.ts via suffix matching). Issue #417.
58
+ const dirParts = importerDir.split('/');
59
+ for (let i = dirParts.length - 1; i >= 0; i--) {
60
+ const ancestorDir = dirParts.slice(0, i).join('/');
61
+ const prefix = ancestorDir ? `${ancestorDir}/` : '';
62
+ if (allFiles.has(`${prefix}${pathLike}/__init__.py`))
63
+ return `${prefix}${pathLike}/__init__.py`;
64
+ if (allFiles.has(`${prefix}${pathLike}.py`))
65
+ return `${prefix}${pathLike}.py`;
66
+ }
67
+ return null;
68
+ }
69
+ /**
70
+ * Python: relative imports (PEP 328) + proximity-based bare imports.
71
+ * Falls through to standard suffix resolution when proximity finds no match.
72
+ */
73
+ export function resolvePythonImport(rawImportPath, filePath, ctx) {
74
+ const resolved = resolvePythonImportInternal(filePath, rawImportPath, ctx.allFilePaths);
75
+ if (resolved) {
76
+ // Store in resolveCache so other files importing the same module skip the
77
+ // ancestor walk. The cache key matches resolveStandard's convention.
78
+ ctx.resolveCache.set(`${filePath}::${rawImportPath}`, resolved);
79
+ return { kind: 'files', files: [resolved] };
80
+ }
81
+ if (rawImportPath.startsWith('.'))
82
+ return null; // relative but unresolved -- don't suffix-match
83
+ return resolveStandard(rawImportPath, filePath, ctx, SupportedLanguages.Python);
84
+ }
85
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/core/parser/import-resolvers/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Ruby require/require_relative import resolution.
3
+ * Handles path resolution for Ruby's require and require_relative calls.
4
+ */
5
+ import type { SuffixIndex } from './utils.js';
6
+ import type { ImportResult, ResolveCtx } from './types.js';
7
+ /**
8
+ * Resolve a Ruby require/require_relative path to a matching .rb file (low-level helper).
9
+ *
10
+ * require_relative paths are pre-normalized to './' prefix by the caller.
11
+ * require paths use suffix matching (gem-style paths like 'json', 'net/http').
12
+ */
13
+ export declare function resolveRubyImportInternal(importPath: string, normalizedFileList: string[], allFileList: string[], index?: SuffixIndex): string | null;
14
+ /** Ruby: require / require_relative. */
15
+ export declare function resolveRubyImport(rawImportPath: string, _filePath: string, ctx: ResolveCtx): ImportResult;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Ruby require/require_relative import resolution.
3
+ * Handles path resolution for Ruby's require and require_relative calls.
4
+ */
5
+ import { suffixResolve } from './utils.js';
6
+ /**
7
+ * Resolve a Ruby require/require_relative path to a matching .rb file (low-level helper).
8
+ *
9
+ * require_relative paths are pre-normalized to './' prefix by the caller.
10
+ * require paths use suffix matching (gem-style paths like 'json', 'net/http').
11
+ */
12
+ export function resolveRubyImportInternal(importPath, normalizedFileList, allFileList, index) {
13
+ const pathParts = importPath.replace(/^\.\//, '').split('/').filter(Boolean);
14
+ return suffixResolve(pathParts, normalizedFileList, allFileList, index);
15
+ }
16
+ /** Ruby: require / require_relative. */
17
+ export function resolveRubyImport(rawImportPath, _filePath, ctx) {
18
+ const resolved = resolveRubyImportInternal(rawImportPath, ctx.normalizedFileList, ctx.allFileList, ctx.index);
19
+ return resolved ? { kind: 'files', files: [resolved] } : null;
20
+ }
21
+ //# sourceMappingURL=ruby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../../src/core/parser/import-resolvers/ruby.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,kBAA4B,EAC5B,WAAqB,EACrB,KAAmB;IAEnB,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,OAAO,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,iBAAiB,CAC/B,aAAqB,EACrB,SAAiB,EACjB,GAAe;IAEf,MAAM,QAAQ,GAAG,yBAAyB,CACxC,aAAa,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,KAAK,CACV,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Rust module import resolution.
3
+ * Handles crate::, super::, self:: prefix paths and :: separators.
4
+ */
5
+ import type { ImportResult, ResolveCtx } from './types.js';
6
+ /**
7
+ * Resolve Rust use-path to a file (low-level helper).
8
+ * Handles crate::, super::, self:: prefixes and :: path separators.
9
+ */
10
+ export declare function resolveRustImportInternal(currentFile: string, importPath: string, allFiles: Set<string>): string | null;
11
+ /**
12
+ * Try to resolve a Rust module path to a file.
13
+ * Tries: path.rs, path/mod.rs, and with the last segment stripped
14
+ * (last segment might be a symbol name, not a module).
15
+ */
16
+ export declare function tryRustModulePath(modulePath: string, allFiles: Set<string>): string | null;
17
+ /** Rust: expand grouped imports: use {crate::a, crate::b} and use crate::models::{User, Repo}. */
18
+ export declare function resolveRustImport(rawImportPath: string, filePath: string, ctx: ResolveCtx): ImportResult;