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