@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
@@ -0,0 +1,607 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { supportForFileWithoutHeaderSample } from "../languages.js";
4
+ import { CSHARP_IDENTIFIER_SOURCE, GO_IDENTIFIER_SOURCE, JAVA_IDENTIFIER_SOURCE, KOTLIN_IDENTIFIER_SOURCE, normalizeCsharpQualifiedName, } from "../util/identifiers.js";
5
+ import { fileIdentityKey } from "../util/paths.js";
6
+ import { maskTrivia } from "../util/trivia.js";
7
+ import { IMPORT_RESOLUTION_ROWS } from "./import-resolution-tables.js";
8
+ /** Languages whose files can name each other's top-level declarations without an import. */
9
+ export const IMPLICIT_UNIT_LANGUAGES = Object.fromEntries(Object.entries(IMPORT_RESOLUTION_ROWS).flatMap(([languageId, row]) => row.implicitCompilationUnit ? [[languageId, true]] : []));
10
+ /**
11
+ * Languages where the file itself is the whole unit: every cross-file reference must arrive
12
+ * through an import/include/module edge the index already records.
13
+ */
14
+ const SINGLE_FILE_UNIT_LANGUAGES = {
15
+ c: true,
16
+ cpp: true,
17
+ js: true,
18
+ ts: true,
19
+ tsx: true,
20
+ python: true,
21
+ ruby: true,
22
+ rust: true,
23
+ zig: true,
24
+ };
25
+ /** Go, Java, and Kotlin read a package clause. Other package-kind languages are not parsed here. */
26
+ function packageClauseLanguage(languageId) {
27
+ return languageId === "go" || languageId === "java" || languageId === "kotlin";
28
+ }
29
+ /**
30
+ * Languages that share one unit identity namespace. Java and Kotlin share the JVM package
31
+ * namespace, so a Kotlin sibling in the same package is as visible as a Java one.
32
+ */
33
+ function unitLanguageGroup(languageId) {
34
+ return IMPORT_RESOLUTION_ROWS[languageId]?.implicitCompilationUnitGroup ?? languageId;
35
+ }
36
+ const GO_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${GO_IDENTIFIER_SOURCE})`, "mu");
37
+ const JAVA_PACKAGE_NAME_PATTERN = new RegExp(String.raw `^\s*package\s+(${JAVA_IDENTIFIER_SOURCE}(?:\.${JAVA_IDENTIFIER_SOURCE})*)\s*;`, "mu");
38
+ const KOTLIN_PACKAGE_NAME_PATTERN = new RegExp(String.raw `^\s*package\s+(${KOTLIN_IDENTIFIER_SOURCE}(?:\.${KOTLIN_IDENTIFIER_SOURCE})*)`, "mu");
39
+ /** Read a JVM package clause from the same trivia-masked source used for unit peers. */
40
+ export function jvmPackageNameFromSource(source, languageId) {
41
+ const pattern = languageId === "kotlin" ? KOTLIN_PACKAGE_NAME_PATTERN : JAVA_PACKAGE_NAME_PATTERN;
42
+ return pattern.exec(maskTrivia(source, languageId))?.[1] ?? null;
43
+ }
44
+ // A namespace name may be qualified (`namespace A.B { }`) and either block-scoped (closing
45
+ // `{`) or file-scoped (closing `;`). Mirrors the composition rule in
46
+ // `util/resolution/csharp.ts`, extended with spans so per-declaration namespaces can be read.
47
+ const CSHARP_NAMESPACE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])namespace\s+(${CSHARP_IDENTIFIER_SOURCE}(?:\s*\.\s*${CSHARP_IDENTIFIER_SOURCE})*)\s*[;{]`, "gu");
48
+ function collectCsharpNamespaceRegions(source) {
49
+ const masked = maskTrivia(source, "csharp");
50
+ const regions = [];
51
+ const scopes = [];
52
+ let depth = 0;
53
+ let cursor = 0;
54
+ for (const match of masked.matchAll(CSHARP_NAMESPACE_DECLARATION_PATTERN)) {
55
+ const matchIndex = match.index ?? 0;
56
+ for (; cursor < matchIndex; cursor += 1) {
57
+ const ch = masked[cursor];
58
+ if (ch === "{") {
59
+ depth += 1;
60
+ }
61
+ else if (ch === "}") {
62
+ depth -= 1;
63
+ while (scopes.length && scopes[scopes.length - 1].openedDepth >= depth) {
64
+ scopes.pop().region.end = cursor;
65
+ }
66
+ }
67
+ }
68
+ const namespaceName = match[1];
69
+ if (!namespaceName)
70
+ continue;
71
+ // `namespace @P` and `namespace P` declare one namespace; compare normalized segments.
72
+ const normalized = normalizeCsharpQualifiedName(namespaceName);
73
+ const terminator = masked[matchIndex + match[0].length - 1];
74
+ cursor = matchIndex + match[0].length;
75
+ if (terminator !== "{") {
76
+ // A file-scoped namespace is always top level and does not open a scope.
77
+ regions.push({ name: normalized, start: matchIndex, end: masked.length });
78
+ continue;
79
+ }
80
+ const enclosing = scopes.length ? scopes[scopes.length - 1].name : null;
81
+ const qualified = enclosing ? `${enclosing}.${normalized}` : normalized;
82
+ const region = { name: qualified, start: matchIndex, end: masked.length };
83
+ regions.push(region);
84
+ scopes.push({ openedDepth: depth, name: qualified, region });
85
+ depth += 1;
86
+ }
87
+ for (; cursor < masked.length; cursor += 1) {
88
+ if (masked[cursor] === "{") {
89
+ depth += 1;
90
+ }
91
+ else if (masked[cursor] === "}") {
92
+ depth -= 1;
93
+ while (scopes.length && scopes[scopes.length - 1].openedDepth >= depth) {
94
+ scopes.pop().region.end = cursor;
95
+ }
96
+ }
97
+ }
98
+ while (scopes.length) {
99
+ scopes.pop().region.end = masked.length;
100
+ }
101
+ // A block-scoped namespace does not cover the whole file, so a type declared outside every
102
+ // region (`class Global {}` beside `namespace P { }`) lives in the global namespace. A
103
+ // whole-file global region keeps that fact; nested named regions still win as innermost.
104
+ if (regions.length && csharpHasTopLevelTypeOutside(masked, regions)) {
105
+ regions.unshift({ name: "", start: 0, end: masked.length });
106
+ }
107
+ return regions;
108
+ }
109
+ const CSHARP_TYPE_KEYWORD_PATTERN = /(?<![\w@])(?:class|struct|interface|enum|record|delegate)(?!\w)/u;
110
+ /** True when trivia-masked source outside every namespace region declares a type. */
111
+ function csharpHasTopLevelTypeOutside(masked, regions) {
112
+ let cursor = 0;
113
+ const outside = [];
114
+ for (const region of [...regions].sort((left, right) => left.start - right.start)) {
115
+ if (region.start > cursor)
116
+ outside.push(masked.slice(cursor, region.start));
117
+ cursor = Math.max(cursor, region.end + 1);
118
+ }
119
+ if (cursor < masked.length)
120
+ outside.push(masked.slice(cursor));
121
+ return outside.some((text) => CSHARP_TYPE_KEYWORD_PATTERN.test(text));
122
+ }
123
+ const packageNameCaches = new WeakMap();
124
+ function packageNameCacheFor(index) {
125
+ let caches = packageNameCaches.get(index);
126
+ if (!caches) {
127
+ caches = { go: new Map(), jvm: new Map() };
128
+ packageNameCaches.set(index, caches);
129
+ }
130
+ return caches;
131
+ }
132
+ const csharpRegionCaches = new WeakMap();
133
+ /**
134
+ * Source to read a unit declaration from: the text the index already parsed when it retained
135
+ * one, and otherwise the file itself. Reusing the retained text keeps the package or namespace
136
+ * consistent with the symbols resolved from that same snapshot.
137
+ */
138
+ function unitDeclarationSource(index, filePath, fileKey) {
139
+ const retained = index.parsed?.get(fileKey)?.source;
140
+ if (retained !== undefined)
141
+ return retained;
142
+ try {
143
+ return fs.readFileSync(filePath, "utf8");
144
+ }
145
+ catch {
146
+ return null;
147
+ }
148
+ }
149
+ /**
150
+ * The declared package name of a Go or JVM file, or `null` when the file declares none (or its
151
+ * source cannot be read). Cached per index so unit facts are read at most once per snapshot.
152
+ */
153
+ function packageDeclarationFor(index, filePath, languageId) {
154
+ const fileKey = fileIdentityKey(filePath);
155
+ const cache = languageId === "go" ? packageNameCacheFor(index).go : packageNameCacheFor(index).jvm;
156
+ const cacheKey = languageId === "go" ? fileKey : `${languageId}::${fileKey}`;
157
+ const cached = cache.get(cacheKey);
158
+ if (cached)
159
+ return cached;
160
+ const source = unitDeclarationSource(index, filePath, fileKey);
161
+ let packageName = null;
162
+ if (source !== null) {
163
+ if (languageId === "go") {
164
+ packageName = GO_PACKAGE_PATTERN.exec(maskTrivia(source, "go"))?.[1] ?? null;
165
+ }
166
+ else {
167
+ packageName = jvmPackageNameFromSource(source, languageId);
168
+ }
169
+ }
170
+ const declaration = { name: packageName, readable: source !== null };
171
+ cache.set(cacheKey, declaration);
172
+ return declaration;
173
+ }
174
+ /** The declared package name, or null when absent or unreadable. */
175
+ export function getPackageDeclarationName(index, filePath, languageId) {
176
+ return packageDeclarationFor(index, filePath, languageId).name;
177
+ }
178
+ /**
179
+ * The C# namespace regions of a file, or `null` when its source cannot be read. Cached per
180
+ * index alongside the package-clause facts.
181
+ */
182
+ export function getCsharpNamespaceRegions(index, filePath) {
183
+ const fileKey = fileIdentityKey(filePath);
184
+ let cache = csharpRegionCaches.get(index);
185
+ if (!cache) {
186
+ cache = new Map();
187
+ csharpRegionCaches.set(index, cache);
188
+ }
189
+ const cached = cache.get(fileKey);
190
+ if (cached !== undefined)
191
+ return cached;
192
+ const source = unitDeclarationSource(index, filePath, fileKey);
193
+ const regions = source === null ? null : collectCsharpNamespaceRegions(source);
194
+ cache.set(fileKey, regions);
195
+ return regions;
196
+ }
197
+ const unitFactCaches = new WeakMap();
198
+ function unitFactFor(index, file) {
199
+ let cache = unitFactCaches.get(index);
200
+ if (!cache) {
201
+ cache = new Map();
202
+ unitFactCaches.set(index, cache);
203
+ }
204
+ const fileKey = fileIdentityKey(file);
205
+ const cached = cache.get(fileKey);
206
+ if (cached)
207
+ return cached;
208
+ const support = supportForFileWithoutHeaderSample(file, index.languageExtensions);
209
+ const languageId = support?.id;
210
+ const unitKind = languageId === undefined ? undefined : IMPORT_RESOLUTION_ROWS[languageId]?.implicitCompilationUnit;
211
+ let identity;
212
+ if (unitKind === "package" && packageClauseLanguage(languageId)) {
213
+ const declaration = packageDeclarationFor(index, file, languageId);
214
+ identity = { kind: "package", name: declaration.name, readable: declaration.readable };
215
+ }
216
+ else if (unitKind === "namespace") {
217
+ identity = { kind: "namespaces", regions: getCsharpNamespaceRegions(index, file) };
218
+ }
219
+ else if (unitKind === "module") {
220
+ identity = { kind: "directory" };
221
+ }
222
+ else if (languageId !== undefined && SINGLE_FILE_UNIT_LANGUAGES[languageId]) {
223
+ identity = { kind: "single-file" };
224
+ }
225
+ else {
226
+ identity = { kind: "unsupported" };
227
+ }
228
+ const fact = {
229
+ file,
230
+ group: languageId === undefined ? "unsupported" : unitLanguageGroup(languageId),
231
+ dirKey: fileIdentityKey(path.dirname(file)),
232
+ identity,
233
+ };
234
+ cache.set(fileKey, fact);
235
+ return fact;
236
+ }
237
+ /**
238
+ * C# namespace names are related when they are equal, one nests inside the other, or either is
239
+ * the global namespace. Two files are potentially visible to each other as bare names when any
240
+ * pair of their declared namespaces is related. A file that also declares unrelated namespaces
241
+ * is still not a bare-name peer of those namespaces; qualified lookup uses the same-directory
242
+ * set instead.
243
+ */
244
+ function csharpNamespacesRelated(left, right) {
245
+ if (left === right || left === "" || right === "")
246
+ return true;
247
+ return left.startsWith(`${right}.`) || right.startsWith(`${left}.`);
248
+ }
249
+ function csharpNamespacesComparable(left, right) {
250
+ // A file without any namespace declaration lives entirely in the global namespace, which is
251
+ // an ancestor of every namespace and comparable with all of them.
252
+ if (!left.length || !right.length)
253
+ return true;
254
+ for (const leftRegion of left) {
255
+ for (const rightRegion of right) {
256
+ if (csharpNamespacesRelated(leftRegion.name, rightRegion.name))
257
+ return true;
258
+ }
259
+ }
260
+ return false;
261
+ }
262
+ /** The normalized C# namespace enclosing `position` in a file (`""` for global), or `null` when unreadable. */
263
+ export function csharpNamespaceAt(index, filePath, position) {
264
+ const regions = getCsharpNamespaceRegions(index, filePath);
265
+ return regions ? csharpNamespaceAtIndex(regions, position) : null;
266
+ }
267
+ function csharpNamespaceAtIndex(regions, position) {
268
+ if (position === undefined)
269
+ return "";
270
+ let innermost;
271
+ for (const region of regions) {
272
+ if (position < region.start || position >= region.end)
273
+ continue;
274
+ if (!innermost || region.start >= innermost.start)
275
+ innermost = region;
276
+ }
277
+ return innermost?.name ?? "";
278
+ }
279
+ function csharpNamespaceVisibleFromUseFile(declarationNamespace, useRegions, useIndex) {
280
+ // The global namespace is the last step of every bare-name lookup.
281
+ if (declarationNamespace === "")
282
+ return true;
283
+ const visibleFrom = (name) => name === declarationNamespace || name.startsWith(`${declarationNamespace}.`);
284
+ if (useIndex !== undefined)
285
+ return visibleFrom(csharpNamespaceAtIndex(useRegions, useIndex));
286
+ return !!useRegions.length && useRegions.every((region) => visibleFrom(region.name));
287
+ }
288
+ /**
289
+ * True when a top-level declaration at `declaration` in `declarationFile` can be named without
290
+ * an import from within `useFile`. Both files must already share a compilation unit (see
291
+ * `getCompilationUnitPeers`); this refines the file-level relation at declaration granularity,
292
+ * which only matters for C# files that declare several namespaces. For every other unit
293
+ * language the file-level identity is the full visibility rule.
294
+ */
295
+ export function isUnitBareNameVisible(args) {
296
+ const declarationFact = unitFactFor(args.index, args.declarationFile);
297
+ if (declarationFact.identity.kind !== "namespaces")
298
+ return true;
299
+ const declarationRegions = declarationFact.identity.regions;
300
+ if (!declarationRegions)
301
+ return true;
302
+ const useFact = unitFactFor(args.index, args.useFile);
303
+ if (useFact.identity.kind !== "namespaces")
304
+ return true;
305
+ const useRegions = useFact.identity.regions;
306
+ if (!useRegions)
307
+ return false;
308
+ if (args.qualification !== undefined) {
309
+ const declared = csharpNamespaceAtIndex(declarationRegions, args.declaration.start.index);
310
+ const qualifier = args.qualification;
311
+ if (qualifier.startsWith("global::"))
312
+ return declared === qualifier.slice("global::".length);
313
+ let enclosing = csharpNamespaceAtIndex(useRegions, args.useIndex);
314
+ while (enclosing) {
315
+ if (declared === `${enclosing}.${qualifier}`)
316
+ return true;
317
+ const separator = enclosing.lastIndexOf(".");
318
+ enclosing = separator < 0 ? "" : enclosing.slice(0, separator);
319
+ }
320
+ return declared === qualifier;
321
+ }
322
+ return csharpNamespaceVisibleFromUseFile(csharpNamespaceAtIndex(declarationRegions, args.declaration.start.index), useRegions, args.useIndex);
323
+ }
324
+ function identityCompatible(own, other) {
325
+ switch (own.kind) {
326
+ case "package":
327
+ return other.kind === "package" && own.name === other.name;
328
+ case "namespaces":
329
+ return (other.kind === "namespaces" &&
330
+ own.regions !== null &&
331
+ other.regions !== null &&
332
+ csharpNamespacesComparable(own.regions, other.regions));
333
+ case "directory":
334
+ return other.kind === "directory";
335
+ default:
336
+ return false;
337
+ }
338
+ }
339
+ const unitFactIndexes = new WeakMap();
340
+ function mapEntry(map, key, create) {
341
+ const existing = map.get(key);
342
+ if (existing)
343
+ return existing;
344
+ const created = create();
345
+ map.set(key, created);
346
+ return created;
347
+ }
348
+ function recordCsharpNamespaces(namespaces, dirKey, regions) {
349
+ namespaces.directories.add(dirKey);
350
+ if (!regions.length)
351
+ namespaces.globalDirs.add(dirKey);
352
+ for (const region of regions) {
353
+ const name = region.name;
354
+ if (!name) {
355
+ namespaces.globalDirs.add(dirKey);
356
+ continue;
357
+ }
358
+ mapEntry(namespaces.exactDirs, name, () => new Set()).add(dirKey);
359
+ let dot = name.indexOf(".");
360
+ while (dot >= 0) {
361
+ mapEntry(namespaces.descendantDirs, name.slice(0, dot), () => new Set()).add(dirKey);
362
+ dot = name.indexOf(".", dot + 1);
363
+ }
364
+ }
365
+ }
366
+ function emptyCsharpNamespaces() {
367
+ return {
368
+ directories: new Set(),
369
+ globalDirs: new Set(),
370
+ exactDirs: new Map(),
371
+ descendantDirs: new Map(),
372
+ };
373
+ }
374
+ function createUnitFactIndex() {
375
+ return {
376
+ filesByGroupDir: new Map(),
377
+ byGroupDir: new Map(),
378
+ byGroupDirPackage: new Map(),
379
+ packageDirs: new Map(),
380
+ unreadableDirs: new Map(),
381
+ csharpNamespaces: emptyCsharpNamespaces(),
382
+ extractedGroups: new Set(),
383
+ extractedDirs: new Set(),
384
+ };
385
+ }
386
+ function recordUnitFact(grouped, fact) {
387
+ if (fact.identity.kind === "single-file" || fact.identity.kind === "unsupported")
388
+ return;
389
+ mapEntry(mapEntry(grouped.byGroupDir, fact.group, () => new Map()), fact.dirKey, () => []).push(fact);
390
+ if ((fact.identity.kind === "package" && !fact.identity.readable) ||
391
+ (fact.identity.kind === "namespaces" && fact.identity.regions === null)) {
392
+ mapEntry(grouped.unreadableDirs, fact.group, () => new Set()).add(fact.dirKey);
393
+ }
394
+ if (fact.identity.kind === "package" && fact.identity.name !== null) {
395
+ const packageName = fact.identity.name;
396
+ mapEntry(mapEntry(mapEntry(grouped.byGroupDirPackage, fact.group, () => new Map()), fact.dirKey, () => new Map()), packageName, () => []).push(fact);
397
+ mapEntry(mapEntry(grouped.packageDirs, fact.group, () => new Map()), packageName, () => new Set()).add(fact.dirKey);
398
+ }
399
+ if (fact.group === "csharp" && fact.identity.kind === "namespaces" && fact.identity.regions) {
400
+ recordCsharpNamespaces(grouped.csharpNamespaces, fact.dirKey, fact.identity.regions);
401
+ }
402
+ }
403
+ function extractedDirKey(group, dirKey) {
404
+ return `${group}\0${dirKey}`;
405
+ }
406
+ function extractDirFacts(index, grouped, group, dirKey) {
407
+ const key = extractedDirKey(group, dirKey);
408
+ if (grouped.extractedDirs.has(key))
409
+ return;
410
+ grouped.extractedDirs.add(key);
411
+ for (const file of grouped.filesByGroupDir.get(group)?.get(dirKey) ?? []) {
412
+ recordUnitFact(grouped, unitFactFor(index, file));
413
+ }
414
+ }
415
+ function extractGroupFacts(index, grouped, group) {
416
+ if (grouped.extractedGroups.has(group))
417
+ return;
418
+ grouped.extractedGroups.add(group);
419
+ const dirs = grouped.filesByGroupDir.get(group);
420
+ if (!dirs)
421
+ return;
422
+ for (const dirKey of dirs.keys()) {
423
+ extractDirFacts(index, grouped, group, dirKey);
424
+ }
425
+ }
426
+ function ensureFactsFor(index, grouped, own) {
427
+ // Swift completeness is a path question; skip source reads until a package or namespace
428
+ // identity actually needs them.
429
+ if (own.identity.kind === "directory")
430
+ return;
431
+ // Go packages are directory-exact, so other Go directories are never peers and must not
432
+ // be opened just to build this file's set.
433
+ if (own.group === "go") {
434
+ extractDirFacts(index, grouped, own.group, own.dirKey);
435
+ return;
436
+ }
437
+ extractGroupFacts(index, grouped, own.group);
438
+ }
439
+ /**
440
+ * Group unit files once per `ProjectIndex` so each file's peer set is derived from a shared
441
+ * directory/package index instead of visiting every indexed module again.
442
+ *
443
+ * The grouping scan uses configured extensions and paths only. Package clauses and C# namespaces
444
+ * are read later, and only for the language group (and, for Go, directory) of the file whose
445
+ * peers were requested, so a Go lookup never opens JVM sources and a JVM lookup never opens
446
+ * Go sources. The cache is tied to the index's `byFile` map identity, size, and language
447
+ * extension mapping so a warm index that later gains, loses, or remaps files rebuilds instead
448
+ * of returning stale peers.
449
+ */
450
+ function cachedUnitFactIndexFor(index) {
451
+ const cached = unitFactIndexes.get(index);
452
+ if (cached &&
453
+ cached.source === index.byFile &&
454
+ cached.size === index.byFile.size &&
455
+ cached.languageExtensions === index.languageExtensions) {
456
+ return cached;
457
+ }
458
+ if (cached && (cached.source !== index.byFile || cached.languageExtensions !== index.languageExtensions)) {
459
+ unitFactCaches.delete(index);
460
+ packageNameCaches.delete(index);
461
+ csharpRegionCaches.delete(index);
462
+ }
463
+ const facts = createUnitFactIndex();
464
+ for (const moduleEntry of index.byFile.values()) {
465
+ const languageId = supportForFileWithoutHeaderSample(moduleEntry.file, index.languageExtensions)?.id;
466
+ if (!languageId || !IMPLICIT_UNIT_LANGUAGES[languageId])
467
+ continue;
468
+ const group = unitLanguageGroup(languageId);
469
+ const dirKey = fileIdentityKey(path.dirname(moduleEntry.file));
470
+ mapEntry(mapEntry(facts.filesByGroupDir, group, () => new Map()), dirKey, () => []).push(moduleEntry.file);
471
+ }
472
+ const built = {
473
+ facts,
474
+ peers: new Map(),
475
+ source: index.byFile,
476
+ size: index.byFile.size,
477
+ languageExtensions: index.languageExtensions,
478
+ };
479
+ unitFactIndexes.set(index, built);
480
+ return built;
481
+ }
482
+ function groupHasOtherDirectory(dirs, dirKey) {
483
+ if (!dirs || dirs.size === 0)
484
+ return false;
485
+ return dirs.size > 1 || !dirs.has(dirKey);
486
+ }
487
+ function csharpRelatedNamespaceOutside(regions, ownDirKey, namespaces) {
488
+ if (!regions.length || regions.some((region) => !region.name)) {
489
+ return groupHasOtherDirectory(namespaces.directories, ownDirKey);
490
+ }
491
+ if (groupHasOtherDirectory(namespaces.globalDirs, ownDirKey))
492
+ return true;
493
+ for (const region of regions) {
494
+ let name = region.name;
495
+ while (name) {
496
+ if (groupHasOtherDirectory(namespaces.exactDirs.get(name), ownDirKey))
497
+ return true;
498
+ const dot = name.lastIndexOf(".");
499
+ name = dot < 0 ? "" : name.slice(0, dot);
500
+ }
501
+ if (groupHasOtherDirectory(namespaces.descendantDirs.get(region.name), ownDirKey))
502
+ return true;
503
+ }
504
+ return false;
505
+ }
506
+ /**
507
+ * Every indexed file that shares a proven compilation unit with `file`, including `file`
508
+ * itself. `complete` is `false` when the unit boundary cannot be proven: the identity is
509
+ * unreadable, the language's unit is not file/directory derivable, or same-identity files
510
+ * exist outside the unit directory so the unit may extend beyond it. Consumers must retain
511
+ * the proven peer set and report partial coverage instead of implying that every possible
512
+ * peer was considered.
513
+ *
514
+ * Pass `csharpQualifiedName` for C# `Namespace.Type` / `global::Namespace.Type` lookup so
515
+ * same-directory files whose namespaces are not related for bare names are still searched.
516
+ * Qualified names can also cross otherwise unrelated namespaces outside the directory,
517
+ * so those files leave the qualified candidate set incomplete. Other languages ignore the flag.
518
+ */
519
+ export function getCompilationUnitPeers(index, file, options) {
520
+ const cached = cachedUnitFactIndexFor(index);
521
+ const fileKey = fileIdentityKey(file);
522
+ const cacheKey = options?.csharpQualifiedName ? `${fileKey}::qualified` : fileKey;
523
+ const previous = cached.peers.get(cacheKey);
524
+ if (previous)
525
+ return previous;
526
+ const result = computeUnitPeers(index, cached.facts, unitFactFor(index, file), !!options?.csharpQualifiedName);
527
+ cached.peers.set(cacheKey, result);
528
+ return result;
529
+ }
530
+ /** Another indexed JVM file with no package clause might share the unnamed package. */
531
+ function jvmGroupHasOtherUnnamedFile(grouped, own) {
532
+ const dirs = grouped.byGroupDir.get(own.group);
533
+ if (!dirs)
534
+ return false;
535
+ const ownKey = fileIdentityKey(own.file);
536
+ for (const facts of dirs.values()) {
537
+ for (const fact of facts) {
538
+ if (fileIdentityKey(fact.file) === ownKey)
539
+ continue;
540
+ if (fact.identity.kind === "package" && fact.identity.name === null)
541
+ return true;
542
+ }
543
+ }
544
+ return false;
545
+ }
546
+ function computeUnitPeers(index, grouped, own, includeUnrelatedCsharpDirectoryPeers = false) {
547
+ const files = new Set([own.file]);
548
+ if (own.identity.kind === "single-file")
549
+ return { files, complete: true };
550
+ if (own.identity.kind === "unsupported")
551
+ return { files, complete: false };
552
+ ensureFactsFor(index, grouped, own);
553
+ const dirFacts = grouped.byGroupDir.get(own.group)?.get(own.dirKey) ?? [];
554
+ const groupDirs = grouped.filesByGroupDir.get(own.group);
555
+ const unreadableDirs = grouped.unreadableDirs.get(own.group);
556
+ const hasUnreadablePeer = own.group === "go" ? !!unreadableDirs?.has(own.dirKey) : !!unreadableDirs?.size;
557
+ if (own.identity.kind === "package") {
558
+ if (own.identity.name === null) {
559
+ // A missing or unreadable `package` clause has no proven identity. Go keeps its
560
+ // historical whole-directory lookup in that case. The JVM unnamed package cannot group
561
+ // files, so peers stay this file; the unit is complete only when no other indexed file
562
+ // could still belong to that unnamed package.
563
+ if (own.group === "go") {
564
+ for (const fact of dirFacts)
565
+ files.add(fact.file);
566
+ return { files, complete: false };
567
+ }
568
+ return { files, complete: !hasUnreadablePeer && !jvmGroupHasOtherUnnamedFile(grouped, own) };
569
+ }
570
+ const packageFacts = grouped.byGroupDirPackage.get(own.group)?.get(own.dirKey)?.get(own.identity.name) ?? [];
571
+ for (const fact of packageFacts)
572
+ files.add(fact.file);
573
+ // Go packages are exactly one directory by language definition, so the directory is the
574
+ // whole unit as long as the package clause is readable. A JVM package can span
575
+ // directories (for example sibling source roots), so its unit is only proven while no
576
+ // same-package file sits outside the directory this relation enumerates.
577
+ const complete = !hasUnreadablePeer &&
578
+ (own.group === "go" ||
579
+ !groupHasOtherDirectory(grouped.packageDirs.get(own.group)?.get(own.identity.name), own.dirKey));
580
+ return { files, complete };
581
+ }
582
+ if (own.identity.kind === "namespaces") {
583
+ if (!own.identity.regions)
584
+ return { files, complete: false };
585
+ for (const fact of dirFacts) {
586
+ if (includeUnrelatedCsharpDirectoryPeers &&
587
+ fact.identity.kind === "namespaces" &&
588
+ fact.identity.regions !== null) {
589
+ files.add(fact.file);
590
+ continue;
591
+ }
592
+ if (identityCompatible(own.identity, fact.identity))
593
+ files.add(fact.file);
594
+ }
595
+ const complete = !hasUnreadablePeer &&
596
+ (includeUnrelatedCsharpDirectoryPeers
597
+ ? !groupHasOtherDirectory(groupDirs, own.dirKey)
598
+ : !csharpRelatedNamespaceOutside(own.identity.regions, own.dirKey, grouped.csharpNamespaces));
599
+ return { files, complete };
600
+ }
601
+ for (const file of groupDirs?.get(own.dirKey) ?? [])
602
+ files.add(file);
603
+ // Swift module membership is not declared in source; a same-module file outside the
604
+ // directory would belong to the same implicit unit but cannot be proven to.
605
+ return { files, complete: !groupHasOtherDirectory(groupDirs, own.dirKey) };
606
+ }
607
+ //# sourceMappingURL=compilation-units.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compilation-units.js","sourceRoot":"","sources":["../../src/indexer/compilation-units.ts"],"names":[],"mappings":"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"}