@lzehrung/codegraph 2.3.31 → 3.0.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 (596) hide show
  1. package/README.md +33 -141
  2. package/codegraph-skill/codegraph/SKILL.md +8 -6
  3. package/dist/agent/artifact.d.ts +2 -0
  4. package/dist/agent/artifact.d.ts.map +1 -1
  5. package/dist/agent/artifact.js.map +1 -1
  6. package/dist/agent/call-hierarchy.js +2 -4
  7. package/dist/agent/call-hierarchy.js.map +1 -1
  8. package/dist/agent/explore.d.ts +1 -1
  9. package/dist/agent/explore.d.ts.map +1 -1
  10. package/dist/agent/explore.js +3 -2
  11. package/dist/agent/explore.js.map +1 -1
  12. package/dist/agent/refactor-plan.js +2 -4
  13. package/dist/agent/refactor-plan.js.map +1 -1
  14. package/dist/agent/rename-preview.d.ts.map +1 -1
  15. package/dist/agent/rename-preview.js +4 -3
  16. package/dist/agent/rename-preview.js.map +1 -1
  17. package/dist/agent/search.d.ts.map +1 -1
  18. package/dist/agent/search.js +5 -3
  19. package/dist/agent/search.js.map +1 -1
  20. package/dist/agent/semantic-symbols.d.ts.map +1 -1
  21. package/dist/agent/semantic-symbols.js +2 -3
  22. package/dist/agent/semantic-symbols.js.map +1 -1
  23. package/dist/agent/session.d.ts +3 -0
  24. package/dist/agent/session.d.ts.map +1 -1
  25. package/dist/agent/session.js +10 -2
  26. package/dist/agent/session.js.map +1 -1
  27. package/dist/agent/type-hierarchy.js +2 -4
  28. package/dist/agent/type-hierarchy.js.map +1 -1
  29. package/dist/agent/workspace-symbols.d.ts.map +1 -1
  30. package/dist/agent/workspace-symbols.js +2 -3
  31. package/dist/agent/workspace-symbols.js.map +1 -1
  32. package/dist/agent-tools.d.ts +0 -4
  33. package/dist/agent-tools.d.ts.map +1 -1
  34. package/dist/agent-tools.js +3 -6
  35. package/dist/agent-tools.js.map +1 -1
  36. package/dist/analysis-summary.d.ts +8 -4
  37. package/dist/analysis-summary.d.ts.map +1 -1
  38. package/dist/analysis-summary.js +15 -66
  39. package/dist/analysis-summary.js.map +1 -1
  40. package/dist/bin/cli.js +51145 -41770
  41. package/dist/bin/query-index-worker.js +122 -82
  42. package/dist/cli/affected.d.ts.map +1 -1
  43. package/dist/cli/affected.js +4 -1
  44. package/dist/cli/affected.js.map +1 -1
  45. package/dist/cli/command-catalog.js +1 -1
  46. package/dist/cli/command-catalog.js.map +1 -1
  47. package/dist/cli/command-table.d.ts.map +1 -1
  48. package/dist/cli/command-table.js +9 -17
  49. package/dist/cli/command-table.js.map +1 -1
  50. package/dist/cli/context.js +10 -10
  51. package/dist/cli/context.js.map +1 -1
  52. package/dist/cli/drift.d.ts +0 -2
  53. package/dist/cli/drift.d.ts.map +1 -1
  54. package/dist/cli/drift.js +0 -1
  55. package/dist/cli/drift.js.map +1 -1
  56. package/dist/cli/graph-delta.d.ts +0 -2
  57. package/dist/cli/graph-delta.d.ts.map +1 -1
  58. package/dist/cli/graph-delta.js +0 -4
  59. package/dist/cli/graph-delta.js.map +1 -1
  60. package/dist/cli/graph-queries.d.ts.map +1 -1
  61. package/dist/cli/graph-queries.js +27 -1
  62. package/dist/cli/graph-queries.js.map +1 -1
  63. package/dist/cli/graph.d.ts +0 -3
  64. package/dist/cli/graph.d.ts.map +1 -1
  65. package/dist/cli/graph.js +4 -14
  66. package/dist/cli/graph.js.map +1 -1
  67. package/dist/cli/help.d.ts +34 -34
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +9 -14
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/impact.d.ts +0 -2
  72. package/dist/cli/impact.d.ts.map +1 -1
  73. package/dist/cli/impact.js +0 -1
  74. package/dist/cli/impact.js.map +1 -1
  75. package/dist/cli/index.d.ts +0 -2
  76. package/dist/cli/index.d.ts.map +1 -1
  77. package/dist/cli/index.js +5 -6
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/cli/inspect.d.ts +0 -2
  80. package/dist/cli/inspect.d.ts.map +1 -1
  81. package/dist/cli/inspect.js +5 -8
  82. package/dist/cli/inspect.js.map +1 -1
  83. package/dist/cli/invocation-context.d.ts +0 -3
  84. package/dist/cli/invocation-context.d.ts.map +1 -1
  85. package/dist/cli/invocation-context.js +4 -16
  86. package/dist/cli/invocation-context.js.map +1 -1
  87. package/dist/cli/navigation.d.ts +0 -2
  88. package/dist/cli/navigation.d.ts.map +1 -1
  89. package/dist/cli/navigation.js +0 -1
  90. package/dist/cli/navigation.js.map +1 -1
  91. package/dist/cli/options.d.ts.map +1 -1
  92. package/dist/cli/options.js +4 -14
  93. package/dist/cli/options.js.map +1 -1
  94. package/dist/cli/review.d.ts +0 -2
  95. package/dist/cli/review.d.ts.map +1 -1
  96. package/dist/cli/review.js +0 -5
  97. package/dist/cli/review.js.map +1 -1
  98. package/dist/cli/root-policy.d.ts +0 -2
  99. package/dist/cli/root-policy.d.ts.map +1 -1
  100. package/dist/cli/root-policy.js +0 -8
  101. package/dist/cli/root-policy.js.map +1 -1
  102. package/dist/cli/server.d.ts.map +1 -1
  103. package/dist/cli/server.js +0 -2
  104. package/dist/cli/server.js.map +1 -1
  105. package/dist/drift/artifact.d.ts.map +1 -1
  106. package/dist/drift/artifact.js +15 -18
  107. package/dist/drift/artifact.js.map +1 -1
  108. package/dist/drift/compare.js +1 -1
  109. package/dist/drift/compare.js.map +1 -1
  110. package/dist/drift/git.d.ts.map +1 -1
  111. package/dist/drift/git.js +0 -1
  112. package/dist/drift/git.js.map +1 -1
  113. package/dist/drift/snapshot.d.ts.map +1 -1
  114. package/dist/drift/snapshot.js +5 -7
  115. package/dist/drift/snapshot.js.map +1 -1
  116. package/dist/drift/types.d.ts +2 -2
  117. package/dist/drift/types.d.ts.map +1 -1
  118. package/dist/drift/types.js.map +1 -1
  119. package/dist/duplicates/unit-cache.d.ts +0 -1
  120. package/dist/duplicates/unit-cache.d.ts.map +1 -1
  121. package/dist/duplicates/unit-cache.js +3 -11
  122. package/dist/duplicates/unit-cache.js.map +1 -1
  123. package/dist/duplicates/units.d.ts +5 -5
  124. package/dist/duplicates/units.d.ts.map +1 -1
  125. package/dist/duplicates/units.js +25 -88
  126. package/dist/duplicates/units.js.map +1 -1
  127. package/dist/graph-builder.d.ts +0 -6
  128. package/dist/graph-builder.d.ts.map +1 -1
  129. package/dist/graph-builder.js +6 -11
  130. package/dist/graph-builder.js.map +1 -1
  131. package/dist/graph-edge-collector.d.ts +4 -6
  132. package/dist/graph-edge-collector.d.ts.map +1 -1
  133. package/dist/graph-edge-collector.js +31 -26
  134. package/dist/graph-edge-collector.js.map +1 -1
  135. package/dist/graphs/angularjs.d.ts.map +1 -1
  136. package/dist/graphs/angularjs.js +2 -1
  137. package/dist/graphs/angularjs.js.map +1 -1
  138. package/dist/graphs/edge-resolution.d.ts +4 -1
  139. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  140. package/dist/graphs/edge-resolution.js +24 -76
  141. package/dist/graphs/edge-resolution.js.map +1 -1
  142. package/dist/graphs/specifiers.d.ts +4 -13
  143. package/dist/graphs/specifiers.d.ts.map +1 -1
  144. package/dist/graphs/specifiers.js +80 -173
  145. package/dist/graphs/specifiers.js.map +1 -1
  146. package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
  147. package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
  148. package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
  149. package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
  150. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +60 -8
  151. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
  152. package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
  153. package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
  154. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
  155. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
  156. package/dist/graphs/symbol-graph-detailed/import-aliases.js +150 -7
  157. package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
  158. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
  159. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
  160. package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
  161. package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
  162. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +141 -25
  163. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
  164. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
  165. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  166. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  167. package/dist/graphs/symbol-graph-detailed.js +449 -46
  168. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  169. package/dist/graphs/symbol-graph.d.ts +2 -0
  170. package/dist/graphs/symbol-graph.d.ts.map +1 -1
  171. package/dist/graphs/symbol-graph.js +34 -16
  172. package/dist/graphs/symbol-graph.js.map +1 -1
  173. package/dist/graphs/types.d.ts +0 -4
  174. package/dist/graphs/types.d.ts.map +1 -1
  175. package/dist/graphs.d.ts +1 -1
  176. package/dist/graphs.d.ts.map +1 -1
  177. package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
  178. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  179. package/dist/impact/call-compatibility/providers/index.js +6 -6
  180. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  181. package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
  182. package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
  183. package/dist/impact/call-compatibility/types.d.ts +6 -0
  184. package/dist/impact/call-compatibility/types.d.ts.map +1 -1
  185. package/dist/impact/call-compatibility.d.ts.map +1 -1
  186. package/dist/impact/call-compatibility.js +316 -526
  187. package/dist/impact/call-compatibility.js.map +1 -1
  188. package/dist/impact/map.js +1 -0
  189. package/dist/impact/map.js.map +1 -1
  190. package/dist/impact/reference-cache.d.ts.map +1 -1
  191. package/dist/impact/reference-cache.js +2 -2
  192. package/dist/impact/reference-cache.js.map +1 -1
  193. package/dist/index.d.ts +2 -2
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +1 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/indexer/ambiguous-resolution.d.ts +11 -0
  198. package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
  199. package/dist/indexer/ambiguous-resolution.js +19 -0
  200. package/dist/indexer/ambiguous-resolution.js.map +1 -0
  201. package/dist/indexer/build-cache/module-cache.d.ts +39 -1
  202. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  203. package/dist/indexer/build-cache/module-cache.js +218 -21
  204. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  205. package/dist/indexer/build-cache/options.d.ts +30 -44
  206. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  207. package/dist/indexer/build-cache/options.js +32 -71
  208. package/dist/indexer/build-cache/options.js.map +1 -1
  209. package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
  210. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  211. package/dist/indexer/build-cache/project-snapshot.js +164 -84
  212. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  213. package/dist/indexer/build-cache/reports.d.ts +0 -2
  214. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  215. package/dist/indexer/build-cache/reports.js +0 -97
  216. package/dist/indexer/build-cache/reports.js.map +1 -1
  217. package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
  218. package/dist/indexer/build-cache/resolver-environment.js +32 -2
  219. package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
  220. package/dist/indexer/build-cache.d.ts +2 -2
  221. package/dist/indexer/build-cache.d.ts.map +1 -1
  222. package/dist/indexer/build-cache.js +2 -2
  223. package/dist/indexer/build-cache.js.map +1 -1
  224. package/dist/indexer/build-index.d.ts.map +1 -1
  225. package/dist/indexer/build-index.js +656 -71
  226. package/dist/indexer/build-index.js.map +1 -1
  227. package/dist/indexer/build-workers.d.ts.map +1 -1
  228. package/dist/indexer/build-workers.js +9 -9
  229. package/dist/indexer/build-workers.js.map +1 -1
  230. package/dist/indexer/call-hierarchy.js +1 -1
  231. package/dist/indexer/call-hierarchy.js.map +1 -1
  232. package/dist/indexer/callable-identity.d.ts +24 -0
  233. package/dist/indexer/callable-identity.d.ts.map +1 -0
  234. package/dist/indexer/callable-identity.js +111 -0
  235. package/dist/indexer/callable-identity.js.map +1 -0
  236. package/dist/indexer/compilation-units.d.ts +103 -0
  237. package/dist/indexer/compilation-units.d.ts.map +1 -0
  238. package/dist/indexer/compilation-units.js +607 -0
  239. package/dist/indexer/compilation-units.js.map +1 -0
  240. package/dist/indexer/cpp-callables.d.ts +25 -0
  241. package/dist/indexer/cpp-callables.d.ts.map +1 -0
  242. package/dist/indexer/cpp-callables.js +562 -0
  243. package/dist/indexer/cpp-callables.js.map +1 -0
  244. package/dist/indexer/declaration-visibility.d.ts +43 -2
  245. package/dist/indexer/declaration-visibility.d.ts.map +1 -1
  246. package/dist/indexer/declaration-visibility.js +158 -2
  247. package/dist/indexer/declaration-visibility.js.map +1 -1
  248. package/dist/indexer/expand-star-imports.d.ts +6 -1
  249. package/dist/indexer/expand-star-imports.d.ts.map +1 -1
  250. package/dist/indexer/expand-star-imports.js +131 -37
  251. package/dist/indexer/expand-star-imports.js.map +1 -1
  252. package/dist/indexer/finalize.d.ts.map +1 -1
  253. package/dist/indexer/finalize.js +0 -1
  254. package/dist/indexer/finalize.js.map +1 -1
  255. package/dist/indexer/import-resolution-tables.d.ts +72 -0
  256. package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
  257. package/dist/indexer/import-resolution-tables.js +137 -0
  258. package/dist/indexer/import-resolution-tables.js.map +1 -0
  259. package/dist/indexer/import-types.d.ts +54 -0
  260. package/dist/indexer/import-types.d.ts.map +1 -1
  261. package/dist/indexer/import-types.js +24 -1
  262. package/dist/indexer/import-types.js.map +1 -1
  263. package/dist/indexer/imports/context.d.ts +16 -1
  264. package/dist/indexer/imports/context.d.ts.map +1 -1
  265. package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
  266. package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
  267. package/dist/indexer/imports/import-binding-tables.js +149 -30
  268. package/dist/indexer/imports/import-binding-tables.js.map +1 -1
  269. package/dist/indexer/imports/js-text-imports.js +4 -4
  270. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  271. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  272. package/dist/indexer/imports/native-captures.js +24 -6
  273. package/dist/indexer/imports/native-captures.js.map +1 -1
  274. package/dist/indexer/imports/python.d.ts +10 -2
  275. package/dist/indexer/imports/python.d.ts.map +1 -1
  276. package/dist/indexer/imports/python.js +128 -112
  277. package/dist/indexer/imports/python.js.map +1 -1
  278. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
  279. package/dist/indexer/imports/text-import-extractors.js +68 -19
  280. package/dist/indexer/imports/text-import-extractors.js.map +1 -1
  281. package/dist/indexer/imports.d.ts +3 -4
  282. package/dist/indexer/imports.d.ts.map +1 -1
  283. package/dist/indexer/imports.js +116 -72
  284. package/dist/indexer/imports.js.map +1 -1
  285. package/dist/indexer/incremental-plan.d.ts +33 -0
  286. package/dist/indexer/incremental-plan.d.ts.map +1 -1
  287. package/dist/indexer/incremental-plan.js +203 -1
  288. package/dist/indexer/incremental-plan.js.map +1 -1
  289. package/dist/indexer/locals-and-exports.d.ts +3 -2
  290. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  291. package/dist/indexer/locals-and-exports.js +659 -78
  292. package/dist/indexer/locals-and-exports.js.map +1 -1
  293. package/dist/indexer/member-selection.d.ts +46 -0
  294. package/dist/indexer/member-selection.d.ts.map +1 -0
  295. package/dist/indexer/member-selection.js +169 -0
  296. package/dist/indexer/member-selection.js.map +1 -0
  297. package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
  298. package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
  299. package/dist/indexer/name-lookup-policies/c-family.js +137 -0
  300. package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
  301. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
  302. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
  303. package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
  304. package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
  305. package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
  306. package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
  307. package/dist/indexer/name-lookup-policies/implicit-self.js +119 -0
  308. package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
  309. package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
  310. package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
  311. package/dist/indexer/name-lookup-policies/index.js +132 -0
  312. package/dist/indexer/name-lookup-policies/index.js.map +1 -0
  313. package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
  314. package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
  315. package/dist/indexer/name-lookup-policies/php.js +82 -0
  316. package/dist/indexer/name-lookup-policies/php.js.map +1 -0
  317. package/dist/indexer/name-resolution-types.d.ts +101 -0
  318. package/dist/indexer/name-resolution-types.d.ts.map +1 -0
  319. package/dist/indexer/name-resolution-types.js +2 -0
  320. package/dist/indexer/name-resolution-types.js.map +1 -0
  321. package/dist/indexer/name-resolution.d.ts +57 -0
  322. package/dist/indexer/name-resolution.d.ts.map +1 -0
  323. package/dist/indexer/name-resolution.js +204 -0
  324. package/dist/indexer/name-resolution.js.map +1 -0
  325. package/dist/indexer/navigation-cpp.d.ts +58 -0
  326. package/dist/indexer/navigation-cpp.d.ts.map +1 -0
  327. package/dist/indexer/navigation-cpp.js +935 -0
  328. package/dist/indexer/navigation-cpp.js.map +1 -0
  329. package/dist/indexer/navigation-goto.d.ts +115 -3
  330. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  331. package/dist/indexer/navigation-goto.js +2469 -190
  332. package/dist/indexer/navigation-goto.js.map +1 -1
  333. package/dist/indexer/navigation-local.d.ts +21 -2
  334. package/dist/indexer/navigation-local.d.ts.map +1 -1
  335. package/dist/indexer/navigation-local.js +520 -63
  336. package/dist/indexer/navigation-local.js.map +1 -1
  337. package/dist/indexer/navigation-php.d.ts +66 -0
  338. package/dist/indexer/navigation-php.d.ts.map +1 -1
  339. package/dist/indexer/navigation-php.js +287 -4
  340. package/dist/indexer/navigation-php.js.map +1 -1
  341. package/dist/indexer/navigation-provenance.d.ts +1 -1
  342. package/dist/indexer/navigation-provenance.d.ts.map +1 -1
  343. package/dist/indexer/navigation-provenance.js +4 -13
  344. package/dist/indexer/navigation-provenance.js.map +1 -1
  345. package/dist/indexer/navigation-references.d.ts +73 -6
  346. package/dist/indexer/navigation-references.d.ts.map +1 -1
  347. package/dist/indexer/navigation-references.js +661 -67
  348. package/dist/indexer/navigation-references.js.map +1 -1
  349. package/dist/indexer/navigation-resolve.d.ts +46 -2
  350. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  351. package/dist/indexer/navigation-resolve.js +599 -193
  352. package/dist/indexer/navigation-resolve.js.map +1 -1
  353. package/dist/indexer/navigation.d.ts +29 -2
  354. package/dist/indexer/navigation.d.ts.map +1 -1
  355. package/dist/indexer/navigation.js +1092 -153
  356. package/dist/indexer/navigation.js.map +1 -1
  357. package/dist/indexer/parse-context.d.ts +2 -3
  358. package/dist/indexer/parse-context.d.ts.map +1 -1
  359. package/dist/indexer/parse-context.js +8 -21
  360. package/dist/indexer/parse-context.js.map +1 -1
  361. package/dist/indexer/php-namespace-symbols.d.ts +66 -0
  362. package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
  363. package/dist/indexer/php-namespace-symbols.js +342 -0
  364. package/dist/indexer/php-namespace-symbols.js.map +1 -0
  365. package/dist/indexer/reference-candidates.d.ts.map +1 -1
  366. package/dist/indexer/reference-candidates.js +13 -7
  367. package/dist/indexer/reference-candidates.js.map +1 -1
  368. package/dist/indexer/reference-context.d.ts +2 -0
  369. package/dist/indexer/reference-context.d.ts.map +1 -1
  370. package/dist/indexer/reference-context.js +4 -0
  371. package/dist/indexer/reference-context.js.map +1 -1
  372. package/dist/indexer/scope-nodes.d.ts +92 -13
  373. package/dist/indexer/scope-nodes.d.ts.map +1 -1
  374. package/dist/indexer/scope-nodes.js +212 -20
  375. package/dist/indexer/scope-nodes.js.map +1 -1
  376. package/dist/indexer/scope-types.d.ts +29 -1
  377. package/dist/indexer/scope-types.d.ts.map +1 -1
  378. package/dist/indexer/scope.d.ts +2 -3
  379. package/dist/indexer/scope.d.ts.map +1 -1
  380. package/dist/indexer/scope.js +968 -47
  381. package/dist/indexer/scope.js.map +1 -1
  382. package/dist/indexer/shared-owner-identity.d.ts +53 -0
  383. package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
  384. package/dist/indexer/shared-owner-identity.js +460 -0
  385. package/dist/indexer/shared-owner-identity.js.map +1 -0
  386. package/dist/indexer/shared.d.ts +1 -1
  387. package/dist/indexer/shared.d.ts.map +1 -1
  388. package/dist/indexer/shared.js +1 -1
  389. package/dist/indexer/shared.js.map +1 -1
  390. package/dist/indexer/star-import-precedence.d.ts +113 -0
  391. package/dist/indexer/star-import-precedence.d.ts.map +1 -0
  392. package/dist/indexer/star-import-precedence.js +402 -0
  393. package/dist/indexer/star-import-precedence.js.map +1 -0
  394. package/dist/indexer/symbols.d.ts +3 -1
  395. package/dist/indexer/symbols.d.ts.map +1 -1
  396. package/dist/indexer/symbols.js +58 -18
  397. package/dist/indexer/symbols.js.map +1 -1
  398. package/dist/indexer/ts-callables.d.ts +42 -0
  399. package/dist/indexer/ts-callables.d.ts.map +1 -0
  400. package/dist/indexer/ts-callables.js +233 -0
  401. package/dist/indexer/ts-callables.js.map +1 -0
  402. package/dist/indexer/types.d.ts +41 -26
  403. package/dist/indexer/types.d.ts.map +1 -1
  404. package/dist/indexer/unused-exports.d.ts +13 -0
  405. package/dist/indexer/unused-exports.d.ts.map +1 -0
  406. package/dist/indexer/unused-exports.js +159 -0
  407. package/dist/indexer/unused-exports.js.map +1 -0
  408. package/dist/indexer/workspace-symbols.d.ts.map +1 -1
  409. package/dist/indexer/workspace-symbols.js +3 -2
  410. package/dist/indexer/workspace-symbols.js.map +1 -1
  411. package/dist/indexer.d.ts +3 -8
  412. package/dist/indexer.d.ts.map +1 -1
  413. package/dist/indexer.js +1 -1
  414. package/dist/indexer.js.map +1 -1
  415. package/dist/languages/callable-arity.d.ts +223 -0
  416. package/dist/languages/callable-arity.d.ts.map +1 -0
  417. package/dist/languages/callable-arity.js +1199 -0
  418. package/dist/languages/callable-arity.js.map +1 -0
  419. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  420. package/dist/languages/definitions/c-family.js +30 -1
  421. package/dist/languages/definitions/c-family.js.map +1 -1
  422. package/dist/languages/definitions/c.d.ts +4 -0
  423. package/dist/languages/definitions/c.d.ts.map +1 -1
  424. package/dist/languages/definitions/c.js +19 -0
  425. package/dist/languages/definitions/c.js.map +1 -1
  426. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  427. package/dist/languages/definitions/cpp.js +12 -0
  428. package/dist/languages/definitions/cpp.js.map +1 -1
  429. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  430. package/dist/languages/definitions/csharp.js +2 -8
  431. package/dist/languages/definitions/csharp.js.map +1 -1
  432. package/dist/languages/definitions/go.d.ts.map +1 -1
  433. package/dist/languages/definitions/go.js +3 -0
  434. package/dist/languages/definitions/go.js.map +1 -1
  435. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  436. package/dist/languages/definitions/javascript.js +10 -1
  437. package/dist/languages/definitions/javascript.js.map +1 -1
  438. package/dist/languages/definitions/js-family.d.ts +1 -1
  439. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  440. package/dist/languages/definitions/js-family.js +7 -1
  441. package/dist/languages/definitions/js-family.js.map +1 -1
  442. package/dist/languages/definitions/php.d.ts.map +1 -1
  443. package/dist/languages/definitions/php.js +5 -1
  444. package/dist/languages/definitions/php.js.map +1 -1
  445. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  446. package/dist/languages/definitions/typescript.js +8 -1
  447. package/dist/languages/definitions/typescript.js.map +1 -1
  448. package/dist/languages/definitions/zig.d.ts.map +1 -1
  449. package/dist/languages/definitions/zig.js +8 -0
  450. package/dist/languages/definitions/zig.js.map +1 -1
  451. package/dist/lifecycle/manifest.d.ts.map +1 -1
  452. package/dist/lifecycle/manifest.js +0 -1
  453. package/dist/lifecycle/manifest.js.map +1 -1
  454. package/dist/mcp/handlers.js +14 -7
  455. package/dist/mcp/handlers.js.map +1 -1
  456. package/dist/native/byte-index.d.ts +6 -0
  457. package/dist/native/byte-index.d.ts.map +1 -1
  458. package/dist/native/byte-index.js +11 -6
  459. package/dist/native/byte-index.js.map +1 -1
  460. package/dist/native/contracts.d.ts +2 -3
  461. package/dist/native/contracts.d.ts.map +1 -1
  462. package/dist/native/execution.d.ts +9 -9
  463. package/dist/native/execution.d.ts.map +1 -1
  464. package/dist/native/execution.js +37 -77
  465. package/dist/native/execution.js.map +1 -1
  466. package/dist/native/js-bridge.d.ts +2 -15
  467. package/dist/native/js-bridge.d.ts.map +1 -1
  468. package/dist/native/js-bridge.js +2 -15
  469. package/dist/native/js-bridge.js.map +1 -1
  470. package/dist/native/query-results.js +2 -2
  471. package/dist/native/query-results.js.map +1 -1
  472. package/dist/native/runtime.d.ts +12 -12
  473. package/dist/native/runtime.d.ts.map +1 -1
  474. package/dist/native/runtime.js +24 -69
  475. package/dist/native/runtime.js.map +1 -1
  476. package/dist/native/tree-sitter-native.d.ts +3 -3
  477. package/dist/native/tree-sitter-native.d.ts.map +1 -1
  478. package/dist/native/tree-sitter-native.js +2 -2
  479. package/dist/native/tree-sitter-native.js.map +1 -1
  480. package/dist/presets.d.ts.map +1 -1
  481. package/dist/presets.js +0 -4
  482. package/dist/presets.js.map +1 -1
  483. package/dist/review/candidates.d.ts.map +1 -1
  484. package/dist/review/candidates.js +1 -1
  485. package/dist/review/candidates.js.map +1 -1
  486. package/dist/review/deleted.d.ts +3 -3
  487. package/dist/review/deleted.d.ts.map +1 -1
  488. package/dist/review/deleted.js +82 -32
  489. package/dist/review/deleted.js.map +1 -1
  490. package/dist/review/report.d.ts +1 -0
  491. package/dist/review/report.d.ts.map +1 -1
  492. package/dist/review/report.js +1 -1
  493. package/dist/review/report.js.map +1 -1
  494. package/dist/review.d.ts.map +1 -1
  495. package/dist/review.js +3 -20
  496. package/dist/review.js.map +1 -1
  497. package/dist/session.d.ts.map +1 -1
  498. package/dist/session.js +0 -5
  499. package/dist/session.js.map +1 -1
  500. package/dist/sql/navigation.d.ts.map +1 -1
  501. package/dist/sql/navigation.js +2 -1
  502. package/dist/sql/navigation.js.map +1 -1
  503. package/dist/sql/source-graph.d.ts.map +1 -1
  504. package/dist/sql/source-graph.js +2 -2
  505. package/dist/sql/source-graph.js.map +1 -1
  506. package/dist/sqlite/schema.d.ts +1 -1
  507. package/dist/sqlite/schema.d.ts.map +1 -1
  508. package/dist/sqlite/schema.js +8 -2
  509. package/dist/sqlite/schema.js.map +1 -1
  510. package/dist/sqlite/write.js +2 -2
  511. package/dist/sqlite/write.js.map +1 -1
  512. package/dist/types.d.ts +2 -0
  513. package/dist/types.d.ts.map +1 -1
  514. package/dist/util/bloom-filter.d.ts +8 -1
  515. package/dist/util/bloom-filter.d.ts.map +1 -1
  516. package/dist/util/bloom-filter.js +15 -2
  517. package/dist/util/bloom-filter.js.map +1 -1
  518. package/dist/util/glob.d.ts +32 -0
  519. package/dist/util/glob.d.ts.map +1 -0
  520. package/dist/util/glob.js +137 -0
  521. package/dist/util/glob.js.map +1 -0
  522. package/dist/util/graph-edges.d.ts +19 -1
  523. package/dist/util/graph-edges.d.ts.map +1 -1
  524. package/dist/util/graph-edges.js +30 -4
  525. package/dist/util/graph-edges.js.map +1 -1
  526. package/dist/util/identifiers.d.ts +15 -0
  527. package/dist/util/identifiers.d.ts.map +1 -1
  528. package/dist/util/identifiers.js +35 -0
  529. package/dist/util/identifiers.js.map +1 -1
  530. package/dist/util/member-access-tables.d.ts +61 -4
  531. package/dist/util/member-access-tables.d.ts.map +1 -1
  532. package/dist/util/member-access-tables.js +139 -19
  533. package/dist/util/member-access-tables.js.map +1 -1
  534. package/dist/util/member-access.d.ts +17 -0
  535. package/dist/util/member-access.d.ts.map +1 -1
  536. package/dist/util/member-access.js +98 -3
  537. package/dist/util/member-access.js.map +1 -1
  538. package/dist/util/project-files.d.ts +2 -10
  539. package/dist/util/project-files.d.ts.map +1 -1
  540. package/dist/util/project-files.js +29 -51
  541. package/dist/util/project-files.js.map +1 -1
  542. package/dist/util/python-type-checking.d.ts +18 -0
  543. package/dist/util/python-type-checking.d.ts.map +1 -0
  544. package/dist/util/python-type-checking.js +160 -0
  545. package/dist/util/python-type-checking.js.map +1 -0
  546. package/dist/util/resolution/cargo-targets.d.ts +11 -0
  547. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  548. package/dist/util/resolution/cargo-targets.js +174 -13
  549. package/dist/util/resolution/cargo-targets.js.map +1 -1
  550. package/dist/util/resolution/csharp.d.ts +33 -1
  551. package/dist/util/resolution/csharp.d.ts.map +1 -1
  552. package/dist/util/resolution/csharp.js +145 -30
  553. package/dist/util/resolution/csharp.js.map +1 -1
  554. package/dist/util/resolution/jvm.d.ts +7 -3
  555. package/dist/util/resolution/jvm.d.ts.map +1 -1
  556. package/dist/util/resolution/jvm.js +56 -38
  557. package/dist/util/resolution/jvm.js.map +1 -1
  558. package/dist/util/resolution/php.d.ts.map +1 -1
  559. package/dist/util/resolution/php.js +35 -8
  560. package/dist/util/resolution/php.js.map +1 -1
  561. package/dist/util/resolution/python.d.ts +9 -0
  562. package/dist/util/resolution/python.d.ts.map +1 -1
  563. package/dist/util/resolution/python.js +46 -0
  564. package/dist/util/resolution/python.js.map +1 -1
  565. package/dist/util/resolution/rust.d.ts +0 -1
  566. package/dist/util/resolution/rust.d.ts.map +1 -1
  567. package/dist/util/resolution/rust.js +95 -35
  568. package/dist/util/resolution/rust.js.map +1 -1
  569. package/dist/util/resolution/specifier-targets.d.ts +44 -0
  570. package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
  571. package/dist/util/resolution/specifier-targets.js +152 -0
  572. package/dist/util/resolution/specifier-targets.js.map +1 -0
  573. package/dist/util/resolution-candidates.d.ts +5 -0
  574. package/dist/util/resolution-candidates.d.ts.map +1 -1
  575. package/dist/util/resolution-candidates.js +16 -3
  576. package/dist/util/resolution-candidates.js.map +1 -1
  577. package/dist/util/resolution.d.ts +2 -1
  578. package/dist/util/resolution.d.ts.map +1 -1
  579. package/dist/util/resolution.js +101 -15
  580. package/dist/util/resolution.js.map +1 -1
  581. package/dist/util/specifiers.d.ts +29 -1
  582. package/dist/util/specifiers.d.ts.map +1 -1
  583. package/dist/util/specifiers.js +56 -8
  584. package/dist/util/specifiers.js.map +1 -1
  585. package/dist/util/trivia.d.ts.map +1 -1
  586. package/dist/util/trivia.js +49 -30
  587. package/dist/util/trivia.js.map +1 -1
  588. package/dist/util/workspace.d.ts.map +1 -1
  589. package/dist/util/workspace.js +32 -4
  590. package/dist/util/workspace.js.map +1 -1
  591. package/docs/mcp.md +3 -2
  592. package/package.json +5 -7
  593. package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
  594. package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
  595. package/dist/impact/call-compatibility/providers/profiles.js +0 -164
  596. package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
@@ -1,7 +1,9 @@
1
- import { confineResolvedPath, readUtf8WithoutBom } from "../paths.js";
2
- import { CSHARP_IDENTIFIER_SOURCE } from "../identifiers.js";
1
+ import { supportForFileWithoutHeaderSample } from "../../languages.js";
2
+ import { confineResolvedPath, fileIdentityKey, readUtf8WithoutBom } from "../paths.js";
3
+ import { CSHARP_IDENTIFIER_SOURCE, normalizeCsharpIdentifier, normalizeCsharpQualifiedName } from "../identifiers.js";
3
4
  import { getImportableLanguageGlobs } from "../resolution-candidates.js";
4
5
  import { maskTrivia } from "../trivia.js";
6
+ import { selectUniqueCsharpNamespaceTypeFile } from "../../indexer/shared-owner-identity.js";
5
7
  import { CSHARP_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
6
8
  import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./project-symbols.js";
7
9
  // A namespace name may be qualified (`namespace A.B { }`) and either block-scoped (closing
@@ -9,6 +11,10 @@ import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./p
9
11
  // may declare several namespaces, and a block-scoped namespace may nest inside another, so
10
12
  // every declaration is indexed under its composed name.
11
13
  const CSHARP_NAMESPACE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])namespace\s+(${CSHARP_IDENTIFIER_SOURCE}(?:\s*\.\s*${CSHARP_IDENTIFIER_SOURCE})*)\s*[;{]`, "gu");
14
+ // Namespace-direct types only. A nested `class Point` inside another type is not `N.Point`.
15
+ // `delegate` is omitted: its return type sits where a type name would, so a naive match
16
+ // would index `void` from `delegate void Point()`.
17
+ const CSHARP_TYPE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])(?:class|struct|interface|enum|record)\s+(?:(?:class|struct)\s+)?(${CSHARP_IDENTIFIER_SOURCE})`, "gu");
12
18
  const csharpNamespaceFileCache = new Map();
13
19
  const csharpProjectNamespaceIndexCache = new Map();
14
20
  /**
@@ -21,20 +27,30 @@ function maskCsharpTrivia(source) {
21
27
  return maskTrivia(source, "csharp");
22
28
  }
23
29
  /**
24
- * Every namespace a file declares, qualified by its enclosing block-scoped namespaces, so
25
- * `namespace Outer { namespace Inner { } }` yields both `Outer` and `Outer.Inner`. Brace depth
26
- * is tracked on the masked source, so braces inside comments and strings cannot compose a name,
27
- * and a namespace nested inside a non-namespace construct is not qualified by that construct.
30
+ * Namespaces a file declares, plus the types declared directly in each one.
31
+ * `@P` and `P` are one namespace, and `namespace Outer { namespace Inner {} }` is
32
+ * `Outer.Inner`, matching compilation-unit identity. Brace depth is tracked on the
33
+ * masked source, so braces inside comments and strings cannot compose a name, and a
34
+ * type nested inside another type is not recorded under the enclosing namespace.
28
35
  */
29
- function collectCsharpNamespaceNames(source) {
36
+ function collectCsharpNamespaceIndex(source) {
30
37
  const masked = maskCsharpTrivia(source);
31
- const names = new Set();
38
+ const namespaces = new Set();
39
+ const symbolsByNamespace = new Map();
32
40
  const scopes = [];
41
+ let fileScoped = null;
33
42
  let depth = 0;
34
43
  let cursor = 0;
44
+ const events = [];
35
45
  for (const match of masked.matchAll(CSHARP_NAMESPACE_DECLARATION_PATTERN)) {
36
- const matchIndex = match.index;
37
- for (; cursor < matchIndex; cursor += 1) {
46
+ events.push({ index: match.index ?? 0, kind: "namespace", match });
47
+ }
48
+ for (const match of masked.matchAll(CSHARP_TYPE_DECLARATION_PATTERN)) {
49
+ events.push({ index: match.index ?? 0, kind: "type", match });
50
+ }
51
+ events.sort((left, right) => left.index - right.index || (left.kind === "namespace" ? -1 : 1));
52
+ const advance = (to) => {
53
+ for (; cursor < to; cursor += 1) {
38
54
  const ch = masked[cursor];
39
55
  if (ch === "{") {
40
56
  depth += 1;
@@ -45,38 +61,67 @@ function collectCsharpNamespaceNames(source) {
45
61
  scopes.pop();
46
62
  }
47
63
  }
48
- const namespaceName = match[1];
49
- if (!namespaceName)
50
- continue;
51
- const normalized = namespaceName.replace(/\s+/gu, "");
52
- const terminator = masked[matchIndex + match[0].length - 1];
53
- cursor = matchIndex + match[0].length;
54
- if (terminator !== "{") {
55
- // A file-scoped namespace is always top level and does not open a scope.
56
- names.add(normalized);
64
+ };
65
+ for (const event of events) {
66
+ advance(event.index);
67
+ if (event.kind === "namespace") {
68
+ const namespaceName = event.match[1];
69
+ if (!namespaceName)
70
+ continue;
71
+ const normalized = normalizeCsharpQualifiedName(namespaceName);
72
+ if (!normalized)
73
+ continue;
74
+ const matchEnd = event.index + event.match[0].length;
75
+ const terminator = masked[matchEnd - 1];
76
+ cursor = matchEnd;
77
+ if (terminator !== "{") {
78
+ // A file-scoped namespace is always top level and does not open a scope.
79
+ fileScoped = normalized;
80
+ namespaces.add(normalized);
81
+ continue;
82
+ }
83
+ const enclosing = scopes.length ? scopes[scopes.length - 1].name : null;
84
+ const qualified = enclosing ? `${enclosing}.${normalized}` : normalized;
85
+ namespaces.add(qualified);
86
+ scopes.push({ openedDepth: depth, name: qualified });
87
+ depth += 1;
57
88
  continue;
58
89
  }
59
- const enclosing = scopes.length ? scopes[scopes.length - 1].name : null;
60
- const qualified = enclosing ? `${enclosing}.${normalized}` : normalized;
61
- names.add(qualified);
62
- scopes.push({ openedDepth: depth, name: qualified });
63
- depth += 1;
90
+ const rawName = event.match[1];
91
+ if (!rawName)
92
+ continue;
93
+ const typeName = normalizeCsharpIdentifier(rawName);
94
+ if (!typeName)
95
+ continue;
96
+ const currentNamespace = scopes.length ? scopes[scopes.length - 1].name : fileScoped;
97
+ if (!currentNamespace)
98
+ continue;
99
+ const contentDepth = scopes.length ? scopes[scopes.length - 1].openedDepth + 1 : 0;
100
+ if (depth !== contentDepth)
101
+ continue;
102
+ const symbols = symbolsByNamespace.get(currentNamespace) ?? new Set();
103
+ symbols.add(typeName);
104
+ symbolsByNamespace.set(currentNamespace, symbols);
64
105
  }
65
- return Array.from(names);
106
+ return { namespaces: Array.from(namespaces), symbolsByNamespace };
66
107
  }
67
108
  async function readCsharpNamespaceIndex(filePath) {
68
109
  const cached = csharpNamespaceFileCache.get(filePath);
69
110
  if (cached)
70
111
  return cached;
71
112
  const source = await readUtf8WithoutBom(filePath);
72
- const entry = { namespaces: collectCsharpNamespaceNames(source) };
113
+ const collected = collectCsharpNamespaceIndex(source);
114
+ const entry = { namespaces: collected.namespaces, symbolsByNamespace: collected.symbolsByNamespace };
73
115
  csharpNamespaceFileCache.set(filePath, entry);
74
116
  return entry;
75
117
  }
76
118
  async function getCsharpProjectNamespaceIndex(indexRoot) {
77
119
  return await getOrCreateProjectSymbolIndex(csharpProjectNamespaceIndexCache, indexRoot, async () => buildDeclaredContainerIndex(indexRoot, getImportableLanguageGlobs("csharp"), async (filePath) => {
78
120
  const entry = await readCsharpNamespaceIndex(filePath);
79
- return entry.namespaces.map((name) => ({ name }));
121
+ return entry.namespaces.map((name) => {
122
+ const symbols = entry.symbolsByNamespace.get(name);
123
+ return symbols ? { name, symbols } : { name };
124
+ });
80
125
  }));
81
126
  }
82
127
  /**
@@ -84,18 +129,88 @@ async function getCsharpProjectNamespaceIndex(indexRoot) {
84
129
  * exists) that declares `spec` as a namespace, via either a block-scoped or a
85
130
  * file-scoped namespace declaration. Sorted by the shared project symbol index.
86
131
  */
87
- export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile) {
132
+ export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile, languageExtensions) {
88
133
  const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
89
134
  const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot);
90
- const packageCandidates = projectIndex.filesByPackage.get(spec) ?? [];
135
+ const normalized = normalizeCsharpQualifiedName(spec);
136
+ const lookup = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
137
+ if (!lookup)
138
+ return [];
139
+ const packageCandidates = projectIndex.filesByPackage.get(lookup) ?? [];
91
140
  const confined = [];
92
141
  for (const candidate of packageCandidates) {
93
142
  const hit = await confineResolvedPath(projectRoot, candidate);
94
- if (hit)
143
+ if (hit && isActiveCsharpFile(hit, languageExtensions))
95
144
  confined.push(hit);
96
145
  }
97
146
  return confined;
98
147
  }
148
+ function slashPath(filePath) {
149
+ return filePath.replace(/\\/g, "/");
150
+ }
151
+ /**
152
+ * The scanner finds candidates by C# filename globs; an active extension mapping can assign one of
153
+ * those suffixes to another language, and such a file is never a C# namespace or type target.
154
+ */
155
+ function isActiveCsharpFile(file, languageExtensions) {
156
+ return !languageExtensions || supportForFileWithoutHeaderSample(file, languageExtensions)?.id === "csharp";
157
+ }
158
+ async function confineCsharpTypeFiles(projectRoot, files, languageExtensions) {
159
+ const confined = [];
160
+ const seen = new Set();
161
+ for (const candidate of files) {
162
+ const hit = await confineResolvedPath(projectRoot, candidate);
163
+ if (!hit || !isActiveCsharpFile(hit, languageExtensions))
164
+ continue;
165
+ const normalized = slashPath(hit);
166
+ const key = fileIdentityKey(normalized);
167
+ if (seen.has(key))
168
+ continue;
169
+ seen.add(key);
170
+ confined.push(normalized);
171
+ }
172
+ return confined;
173
+ }
174
+ /**
175
+ * The file that declares `typeName` directly in `namespaceName`.
176
+ * One file binds immediately. Several files bind only when partial-type ownership
177
+ * collapses them to one representative; otherwise the result is `ambiguous` or
178
+ * `partial` and never the first path.
179
+ */
180
+ export async function resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions) {
181
+ const normalizedNamespace = normalizeCsharpQualifiedName(namespaceName);
182
+ const namespaceLookup = normalizedNamespace.startsWith("global::")
183
+ ? normalizedNamespace.slice("global::".length)
184
+ : normalizedNamespace;
185
+ const normalizedType = normalizeCsharpIdentifier(typeName);
186
+ if (!namespaceLookup || !normalizedType)
187
+ return { status: "not_found" };
188
+ const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
189
+ const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot);
190
+ const files = projectIndex.filesByPackageSymbol.get(namespaceLookup)?.get(normalizedType) ?? [];
191
+ const confined = await confineCsharpTypeFiles(projectRoot, files, languageExtensions);
192
+ if (confined.length === 0)
193
+ return { status: "not_found" };
194
+ if (confined.length === 1)
195
+ return { status: "found", file: confined[0] };
196
+ return selectUniqueCsharpNamespaceTypeFile(confined, namespaceLookup, normalizedType);
197
+ }
198
+ /**
199
+ * `N.Point` (and `@N.@Point`) as a type in namespace `N`, after namespace identity
200
+ * normalization. A single-segment spec is not a dotted type. Navigation, references,
201
+ * and the symbol graph follow the import binding this resolves; the dependency graph
202
+ * calls this helper itself because it re-resolves the specifier text.
203
+ */
204
+ export async function resolveCsharpDottedTypeImportPath(projectRoot, spec, fromFile, languageExtensions) {
205
+ const normalized = normalizeCsharpQualifiedName(spec);
206
+ const body = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
207
+ const parts = body.split(".").filter(Boolean);
208
+ if (parts.length < 2)
209
+ return { status: "not_found" };
210
+ const typeName = parts[parts.length - 1];
211
+ const namespaceName = parts.slice(0, -1).join(".");
212
+ return await resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions);
213
+ }
99
214
  export function clearCsharpResolutionCaches() {
100
215
  csharpNamespaceFileCache.clear();
101
216
  csharpProjectNamespaceIndexCache.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAA6B,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mCAAmC,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAE9B,MAAM,sBAAsB,CAAC;AAE9B,2FAA2F;AAC3F,8FAA8F;AAC9F,2FAA2F;AAC3F,wDAAwD;AACxD,MAAM,oCAAoC,GAAG,IAAI,MAAM,CACrD,MAAM,CAAC,GAAG,CAAA,2BAA2B,wBAAwB,cAAc,wBAAwB,YAAY,EAC/G,IAAI,CACL,CAAC;AACF,4FAA4F;AAC5F,wFAAwF;AACxF,mDAAmD;AACnD,MAAM,+BAA+B,GAAG,IAAI,MAAM,CAChD,MAAM,CAAC,GAAG,CAAA,gFAAgF,wBAAwB,GAAG,EACrH,IAAI,CACL,CAAC;AA2BF,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAqC,CAAC;AAC9E,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAA+C,CAAC;AAEhG;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,2BAA2B,CAAC,MAAc;IAIjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IAGf,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,MAAM,OAAO,GAAG,CAAC,EAAU,EAAQ,EAAE;QACnC,OAAO,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,WAAW,IAAI,KAAK;oBAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa;gBAAE,SAAS;YAC7B,MAAM,UAAU,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,QAAQ,CAAC;YAClB,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,yEAAyE;gBACzE,UAAU,GAAG,UAAU,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACxE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACrD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACtF,IAAI,CAAC,gBAAgB;YAAE,SAAS;QAChC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,YAAY;YAAE,SAAS;QACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC;IACrG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,SAAiB;IAC7D,OAAO,MAAM,6BAA6B,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,CACjG,2BAA2B,CAAC,SAAS,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC9F,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,WAAmB,EACnB,IAAY,EACZ,QAAgB,EAChB,kBAAyC;IAEzC,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IACzG,MAAM,YAAY,GAAG,MAAM,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACpG,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB;IACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,kBAAoD;IAC5F,OAAO,CAAC,kBAAkB,IAAI,iCAAiC,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,EAAE,KAAK,QAAQ,CAAC;AAC7G,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,KAAwB,EACxB,kBAAoD;IAEpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YAAE,SAAS;QACnE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,QAAgB,EAChB,kBAAyC;IAEzC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC;QAChE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,mBAAmB,CAAC;IACxB,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,eAAe,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAExE,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IACzG,MAAM,YAAY,GAAG,MAAM,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAChG,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACtF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC;IAC1E,OAAO,mCAAmC,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AACxF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,WAAmB,EACnB,IAAY,EACZ,QAAgB,EAChB,kBAAyC;IAEzC,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,MAAM,8BAA8B,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IACjC,gCAAgC,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC"}
@@ -1,5 +1,9 @@
1
- export declare function resolveJvmPackageImportPaths(projectRoot: string, spec: string, languageId: "java" | "kotlin", fromFile: string): Promise<string[]>;
2
- export declare function resolveKotlinImportPath(projectRoot: string, spec: string, fromFile: string): Promise<string | null>;
3
- export declare function resolveJavaImportPath(projectRoot: string, spec: string, fromFile: string): Promise<string | null>;
1
+ type JvmImportResolutionOptions = {
2
+ languageId: "java" | "kotlin";
3
+ fromFile: string;
4
+ };
5
+ export declare function resolveJvmPackageImportPaths(projectRoot: string, spec: string, fromFile: string): Promise<string[]>;
6
+ export declare function resolveJvmImportPath(projectRoot: string, spec: string, options: JvmImportResolutionOptions): Promise<string | null>;
4
7
  export declare function clearJvmResolutionCaches(): void;
8
+ export {};
5
9
  //# sourceMappingURL=jvm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jvm.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"AAsJA,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,QAAQ,EAC7B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;AA8DD,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAO/C"}
1
+ {"version":3,"file":"jvm.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"AA8CA,KAAK,0BAA0B,GAAG;IAChC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAyHF,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+DxB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAO/C"}
@@ -4,9 +4,10 @@ import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./p
4
4
  import { JAVA_IDENTIFIER_IGNORABLE_SOURCE, JAVA_IDENTIFIER_SOURCE, KOTLIN_IDENTIFIER_SOURCE } from "../identifiers.js";
5
5
  import { confineResolvedPath, readUtf8WithoutBom } from "../paths.js";
6
6
  import { getImportableLanguageGlobs } from "../resolution-candidates.js";
7
+ import { buildTriviaMask } from "../trivia.js";
7
8
  import { JVM_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
8
9
  const KOTLIN_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${KOTLIN_IDENTIFIER_SOURCE}(?:\.${KOTLIN_IDENTIFIER_SOURCE})*)`, "mu");
9
- const KOTLIN_DECLARATION_PATTERN = new RegExp(String.raw `\b(?:class|object|fun|typealias|interface)\s+(${KOTLIN_IDENTIFIER_SOURCE})`, "gu");
10
+ const KOTLIN_DECLARATION_PATTERN = new RegExp(String.raw `\b(class|object|fun|typealias|interface)\s+(${KOTLIN_IDENTIFIER_SOURCE})`, "gu");
10
11
  const JAVA_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${JAVA_IDENTIFIER_SOURCE}(?:\.${JAVA_IDENTIFIER_SOURCE})*)\s*;`, "mu");
11
12
  const JAVA_DECLARATION_PATTERN = new RegExp(String.raw `(?:\b(?:class|interface|enum|record)|@interface)\s+(${JAVA_IDENTIFIER_SOURCE})`, "gu");
12
13
  const JAVA_IDENTIFIER_IGNORABLE_PATTERN = new RegExp(`[${JAVA_IDENTIFIER_IGNORABLE_SOURCE}]`, "gu");
@@ -22,28 +23,50 @@ async function readJvmSymbolIndex(filePath, cache, options) {
22
23
  return cached;
23
24
  const source = await readUtf8WithoutBom(filePath);
24
25
  const packageName = source.match(options.packagePattern)?.[1] ?? null;
26
+ const javaImportableTypes = options.javaImportableTypes ? new Set() : undefined;
25
27
  const symbols = new Set();
28
+ const trivia = buildTriviaMask(source, options.languageId);
29
+ let depth = 0;
30
+ let cursor = 0;
26
31
  for (const match of source.matchAll(options.declarationPattern)) {
27
- const symbolName = match[1];
32
+ const matchIndex = match.index ?? 0;
33
+ for (; cursor < matchIndex; cursor += 1) {
34
+ if (trivia[cursor])
35
+ continue;
36
+ if (source[cursor] === "{")
37
+ depth += 1;
38
+ else if (depth && source[cursor] === "}")
39
+ depth -= 1;
40
+ }
41
+ if (depth || trivia[matchIndex])
42
+ continue;
43
+ const symbolName = match[options.declarationNameGroup ?? 1];
28
44
  if (symbolName) {
45
+ if (javaImportableTypes && (match[1] === "class" || match[1] === "object" || match[1] === "interface")) {
46
+ javaImportableTypes.add(symbolName);
47
+ }
29
48
  symbols.add(symbolName);
30
49
  const normalizedSymbol = options.normalizeSymbol?.(symbolName);
31
50
  if (normalizedSymbol)
32
51
  symbols.add(normalizedSymbol);
33
52
  }
34
53
  }
35
- const entry = { packageName, symbols };
54
+ const entry = { packageName, symbols, ...(javaImportableTypes ? { javaImportableTypes } : {}) };
36
55
  cache.set(filePath, entry);
37
56
  return entry;
38
57
  }
39
58
  async function readKotlinSymbolIndex(filePath) {
40
59
  return await readJvmSymbolIndex(filePath, kotlinSymbolIndexCache, {
60
+ languageId: "kotlin",
41
61
  packagePattern: KOTLIN_PACKAGE_PATTERN,
42
62
  declarationPattern: KOTLIN_DECLARATION_PATTERN,
63
+ declarationNameGroup: 2,
64
+ javaImportableTypes: true,
43
65
  });
44
66
  }
45
67
  async function readJavaSymbolIndex(filePath) {
46
68
  return await readJvmSymbolIndex(filePath, javaSymbolIndexCache, {
69
+ languageId: "java",
47
70
  packagePattern: JAVA_PACKAGE_PATTERN,
48
71
  declarationPattern: JAVA_DECLARATION_PATTERN,
49
72
  normalizeSymbol: (symbol) => symbol.replace(JAVA_IDENTIFIER_IGNORABLE_PATTERN, ""),
@@ -86,10 +109,16 @@ async function confineJvmResolvedPath(projectRoot, resolved) {
86
109
  async function jvmIndexRoot(projectRoot, fromFile) {
87
110
  return await resolveNearestManifestRoot(projectRoot, fromFile, JVM_PACKAGE_MANIFEST_NAMES);
88
111
  }
89
- export async function resolveJvmPackageImportPaths(projectRoot, spec, languageId, fromFile) {
112
+ export async function resolveJvmPackageImportPaths(projectRoot, spec, fromFile) {
90
113
  const indexRoot = await jvmIndexRoot(projectRoot, fromFile);
91
- const projectIndex = await getJvmProjectSymbolIndex(indexRoot, languageId);
92
- const packageCandidates = projectIndex.filesByPackage.get(spec) ?? [];
114
+ const [javaIndex, kotlinIndex] = await Promise.all([
115
+ getJavaProjectSymbolIndex(indexRoot),
116
+ getKotlinProjectSymbolIndex(indexRoot),
117
+ ]);
118
+ const packageFiles = new Set(javaIndex.filesByPackage.get(spec) ?? []);
119
+ for (const file of kotlinIndex.filesByPackage.get(spec) ?? [])
120
+ packageFiles.add(file);
121
+ const packageCandidates = [...packageFiles].sort((left, right) => left.localeCompare(right));
93
122
  const confined = [];
94
123
  for (const candidate of packageCandidates) {
95
124
  const hit = await confineJvmResolvedPath(projectRoot, candidate);
@@ -98,7 +127,7 @@ export async function resolveJvmPackageImportPaths(projectRoot, spec, languageId
98
127
  }
99
128
  return confined;
100
129
  }
101
- async function resolveJvmImportPath(projectRoot, spec, options) {
130
+ export async function resolveJvmImportPath(projectRoot, spec, options) {
102
131
  const cache = options.languageId === "kotlin" ? kotlinImportResolutionCache : javaImportResolutionCache;
103
132
  const indexRoot = await jvmIndexRoot(projectRoot, options.fromFile);
104
133
  const cacheKey = `${path.resolve(projectRoot)}::${indexRoot}::${spec}`;
@@ -108,7 +137,8 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
108
137
  const parts = spec.split(".").filter(Boolean);
109
138
  const projectIndex = await getJvmProjectSymbolIndex(indexRoot, options.languageId);
110
139
  if (parts.length < 2) {
111
- if (!options.allowBarePackage) {
140
+ // Kotlin can import a top-level declaration of the default package; Java cannot.
141
+ if (options.languageId !== "kotlin") {
112
142
  cache.set(cacheKey, null);
113
143
  return null;
114
144
  }
@@ -117,14 +147,6 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
117
147
  cache.set(cacheKey, resolved);
118
148
  return resolved;
119
149
  }
120
- if (options.matchExactPackage) {
121
- const exactPackageFiles = projectIndex.filesByPackage.get(spec) ?? [];
122
- if (exactPackageFiles[0]) {
123
- const resolved = await confineJvmResolvedPath(projectRoot, path.resolve(exactPackageFiles[0]));
124
- cache.set(cacheKey, resolved);
125
- return resolved;
126
- }
127
- }
128
150
  const importedName = parts[parts.length - 1];
129
151
  const packageName = parts.slice(0, -1).join(".");
130
152
  const packageCandidates = projectIndex.filesByPackage.get(packageName) ?? [];
@@ -133,33 +155,29 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
133
155
  cache.set(cacheKey, resolved);
134
156
  return resolved;
135
157
  }
136
- const symbolFiles = projectIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
137
- const filenameMatched = options.filenameFallback
138
- ? packageCandidates.filter((candidate) => path.parse(candidate).name === importedName)
139
- : [];
158
+ const otherIndex = await getJvmProjectSymbolIndex(indexRoot, options.languageId === "java" ? "kotlin" : "java");
159
+ const ownFiles = projectIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
160
+ const otherFiles = otherIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
161
+ const sharedFiles = options.languageId === "java"
162
+ ? await Promise.all(otherFiles.map(async (file) => (await readKotlinSymbolIndex(file)).javaImportableTypes?.has(importedName) ? file : null))
163
+ : otherFiles;
164
+ const symbolFiles = [...ownFiles, ...sharedFiles.filter((file) => file !== null)];
165
+ const filenameMatched = [];
166
+ // Java alone falls back to the file named after the imported type.
167
+ if (options.languageId === "java" && !symbolFiles.length) {
168
+ for (const candidate of packageCandidates) {
169
+ if (path.parse(candidate).name !== importedName)
170
+ continue;
171
+ const entry = await readJavaSymbolIndex(candidate);
172
+ if (!entry.symbols.size || entry.symbols.has(importedName))
173
+ filenameMatched.push(candidate);
174
+ }
175
+ }
140
176
  const candidates = symbolFiles.length ? symbolFiles : filenameMatched;
141
177
  const resolved = candidates.length === 1 ? await confineJvmResolvedPath(projectRoot, path.resolve(candidates[0])) : null;
142
178
  cache.set(cacheKey, resolved);
143
179
  return resolved;
144
180
  }
145
- export async function resolveKotlinImportPath(projectRoot, spec, fromFile) {
146
- return await resolveJvmImportPath(projectRoot, spec, {
147
- languageId: "kotlin",
148
- allowBarePackage: true,
149
- matchExactPackage: false,
150
- filenameFallback: false,
151
- fromFile,
152
- });
153
- }
154
- export async function resolveJavaImportPath(projectRoot, spec, fromFile) {
155
- return await resolveJvmImportPath(projectRoot, spec, {
156
- languageId: "java",
157
- allowBarePackage: false,
158
- matchExactPackage: true,
159
- filenameFallback: true,
160
- fromFile,
161
- });
162
- }
163
181
  export function clearJvmResolutionCaches() {
164
182
  kotlinImportResolutionCache.clear();
165
183
  kotlinSymbolIndexCache.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"jvm.js","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jvm.js","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/php.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAuehE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4ExB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C"}
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/php.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAigBhE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4ExB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C"}
@@ -5,7 +5,7 @@ export { getPhpComposerImplicitFiles } from "./php-composer.js";
5
5
  import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./project-symbols.js";
6
6
  import { getImportableLanguageExtensions, getImportableLanguageGlobs } from "../resolution-candidates.js";
7
7
  import { confineResolvedPath, readUtf8WithoutBom } from "../paths.js";
8
- import { PHP_IDENTIFIER_SOURCE } from "../identifiers.js";
8
+ import { foldPhpIdentifierCase, PHP_IDENTIFIER_SOURCE } from "../identifiers.js";
9
9
  import { PHP_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
10
10
  const PHP_IDENTIFIER_PATTERN = new RegExp(PHP_IDENTIFIER_SOURCE, "uy");
11
11
  async function resolvePhpPathLikeSpecifier(projectRoot, fromFile, spec) {
@@ -36,7 +36,7 @@ async function getPhpProjectSymbolIndex(indexRoot) {
36
36
  return await getOrCreateProjectSymbolIndex(phpProjectSymbolIndexCache, indexRoot, async () => buildDeclaredContainerIndex(indexRoot, getImportableLanguageGlobs("php"), async (filePath) => {
37
37
  const entry = await readPhpSymbolIndex(filePath);
38
38
  return entry.packageEntries.map((packageEntry) => ({
39
- name: packageEntry.packageName,
39
+ name: foldPhpIdentifierCase(packageEntry.packageName),
40
40
  symbols: packageEntry.symbols,
41
41
  }));
42
42
  }));
@@ -384,6 +384,24 @@ function tokenizePhpSource(source) {
384
384
  async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allowedFiles, indexRoot) {
385
385
  const normalizedSpec = spec.replace(/^\\+/, "");
386
386
  const projectIndex = await getPhpProjectSymbolIndex(indexRoot ?? projectRoot);
387
+ const packageCandidateFiles = (packageName) => projectIndex.filesByPackage.get(foldPhpIdentifierCase(packageName)) ?? [];
388
+ const symbolCandidateFiles = (packageName, symbolName) => {
389
+ const filesBySymbol = projectIndex.filesByPackageSymbol.get(foldPhpIdentifierCase(packageName));
390
+ if (!filesBySymbol)
391
+ return [];
392
+ if (preferredKind === "const" || !preferredKind) {
393
+ return filesBySymbol.get(symbolName) ?? [];
394
+ }
395
+ const foldedName = foldPhpIdentifierCase(symbolName);
396
+ const candidates = new Set();
397
+ for (const [candidateName, files] of filesBySymbol) {
398
+ if (foldPhpIdentifierCase(candidateName) !== foldedName)
399
+ continue;
400
+ for (const file of files)
401
+ candidates.add(file);
402
+ }
403
+ return [...candidates];
404
+ };
387
405
  const pickCandidate = async (candidates, symbolName) => {
388
406
  for (const candidate of candidates) {
389
407
  const resolvedCandidate = await confineResolvedPath(projectRoot, candidate);
@@ -396,21 +414,30 @@ async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allo
396
414
  return resolvedCandidate;
397
415
  }
398
416
  const entry = await readPhpSymbolIndex(resolvedCandidate);
399
- const symbolKinds = entry.kindsBySymbol.get(symbolName);
400
- if (symbolKinds?.has(preferredKind)) {
417
+ let hasPreferredKind = entry.kindsBySymbol.get(symbolName)?.has(preferredKind) ?? false;
418
+ if (!hasPreferredKind && preferredKind !== "const") {
419
+ const foldedName = foldPhpIdentifierCase(symbolName);
420
+ for (const [candidateName, candidateKinds] of entry.kindsBySymbol) {
421
+ if (foldPhpIdentifierCase(candidateName) === foldedName && candidateKinds.has(preferredKind)) {
422
+ hasPreferredKind = true;
423
+ break;
424
+ }
425
+ }
426
+ }
427
+ if (hasPreferredKind) {
401
428
  return resolvedCandidate;
402
429
  }
403
430
  }
404
431
  return null;
405
432
  };
406
- const exactNamespaceFiles = projectIndex.filesByPackage.get(normalizedSpec) ?? [];
433
+ const exactNamespaceFiles = packageCandidateFiles(normalizedSpec);
407
434
  const exactNamespaceHit = await pickCandidate(exactNamespaceFiles);
408
435
  if (exactNamespaceHit) {
409
436
  return exactNamespaceHit;
410
437
  }
411
438
  const parts = normalizedSpec.split("\\").filter(Boolean);
412
439
  if (parts.length === 1) {
413
- const globalFiles = projectIndex.filesByPackageSymbol.get("")?.get(parts[0]) ?? [];
440
+ const globalFiles = symbolCandidateFiles("", parts[0]);
414
441
  return await pickCandidate(globalFiles, parts[0]);
415
442
  }
416
443
  if (parts.length < 2) {
@@ -418,12 +445,12 @@ async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allo
418
445
  }
419
446
  const importedName = parts[parts.length - 1];
420
447
  const packageName = parts.slice(0, -1).join("\\");
421
- const symbolFiles = projectIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
448
+ const symbolFiles = symbolCandidateFiles(packageName, importedName);
422
449
  const symbolHit = await pickCandidate(symbolFiles, importedName);
423
450
  if (symbolHit) {
424
451
  return symbolHit;
425
452
  }
426
- const packageFiles = projectIndex.filesByPackage.get(packageName) ?? [];
453
+ const packageFiles = packageCandidateFiles(packageName);
427
454
  return await pickCandidate(packageFiles, importedName);
428
455
  }
429
456
  export async function resolvePhpImportPath(projectRoot, fromFile, spec, preferredKind) {