cgraphx 2.0.2 → 2.0.3

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 (680) hide show
  1. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  2. package/dist/core/code/engine/cli/analyze.js +1086 -0
  3. package/dist/core/code/engine/cli/cli-message.js +83 -0
  4. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  5. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  6. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  7. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  8. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  9. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  10. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  11. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  12. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  13. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  14. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  15. package/dist/core/code/engine/cli/status.js +156 -0
  16. package/dist/core/code/engine/cli/tool.js +384 -0
  17. package/dist/core/code/engine/config/ignore-service.js +511 -0
  18. package/dist/core/code/engine/config/supported-languages.js +17 -0
  19. package/dist/core/code/engine/core/analysis-features.js +64 -0
  20. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  21. package/dist/core/code/engine/core/git-staleness.js +180 -0
  22. package/dist/core/code/engine/core/graph/graph.js +180 -0
  23. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  24. package/dist/core/code/engine/core/graph/types.js +2 -0
  25. package/dist/core/code/engine/core/index-freshness.js +12 -0
  26. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  27. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  28. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  29. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  30. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  31. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  32. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  33. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  34. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  35. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  36. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  37. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  38. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  39. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  40. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  41. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  42. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  43. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  44. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  45. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  46. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  47. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  48. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  49. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  50. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  51. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  52. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  53. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  54. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  55. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  56. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  57. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  58. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  81. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  82. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  83. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  84. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  85. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  86. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  87. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  88. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  89. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  90. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  91. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  92. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  93. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  94. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  95. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  96. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  97. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  98. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  99. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  100. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  101. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  102. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  103. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  104. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  105. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  106. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  107. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  108. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  109. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  110. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  111. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  113. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  114. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  115. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  116. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  117. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  118. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  119. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  120. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  121. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  122. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  123. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  124. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  125. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  126. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  127. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  128. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  129. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  130. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  131. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  132. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  133. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  134. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  135. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  136. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  137. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  138. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  139. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  140. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  141. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  142. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  143. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  144. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  145. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  146. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  147. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  148. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  149. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  150. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  151. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  157. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  158. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  159. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  160. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  161. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  162. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  163. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  164. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  165. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  166. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  167. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  168. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  169. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  170. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  171. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  172. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  173. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  174. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  175. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  176. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  177. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  178. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  179. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  180. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  181. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  182. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  183. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  184. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  185. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  186. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  187. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  188. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  189. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  190. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  191. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  199. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  200. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  201. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  202. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  203. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  204. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  205. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  206. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  207. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  208. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  209. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  210. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  211. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  212. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  213. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  214. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  215. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  217. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  218. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  219. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  220. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  221. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  222. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  223. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  224. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  225. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  226. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  227. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  228. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  229. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  230. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  231. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  232. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  233. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  234. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  235. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  236. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  237. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  238. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  239. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  240. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  241. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  242. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  243. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  244. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  245. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  246. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  247. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  248. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  249. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  250. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  257. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  258. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  259. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  260. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  261. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  262. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  263. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  264. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  265. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  266. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  267. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  268. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  269. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  270. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  271. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  272. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  273. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  274. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  281. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  282. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  283. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  284. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  285. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  286. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  287. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  288. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  289. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  290. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  291. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  292. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  293. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  294. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  295. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  296. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  297. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  298. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  299. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  300. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  301. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  302. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  303. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  304. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  305. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  306. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  307. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  308. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  315. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  316. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  317. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  318. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  319. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  320. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  321. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  322. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  323. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  324. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  325. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  326. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  327. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  328. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  329. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  330. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  331. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  332. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  333. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  334. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  335. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  336. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  337. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  338. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  339. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  340. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  341. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  342. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  343. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  344. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  345. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  346. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  347. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  348. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  349. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  350. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  351. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  352. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  353. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  354. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  355. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  356. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  357. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  358. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  359. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  360. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  361. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  362. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  363. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  364. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  365. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  366. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  367. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  368. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  369. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  370. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  371. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  372. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  373. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  374. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  375. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  376. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  377. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  378. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  379. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  380. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  381. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  382. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  383. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  384. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  385. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  386. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  387. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  388. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  389. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  390. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  391. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  396. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  397. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  398. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  399. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  400. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  401. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  402. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  403. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  404. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  405. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  406. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  407. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  408. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  409. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  410. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  411. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  412. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  414. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  415. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  416. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  417. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  418. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  419. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  420. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  421. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  422. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  423. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  424. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  425. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  426. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  427. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  428. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  429. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  430. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  431. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  432. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  433. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  434. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  435. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  436. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  437. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  438. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  439. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  440. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  442. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  443. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  444. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  445. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  446. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  447. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  448. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  449. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  450. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  451. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  452. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  453. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  454. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  455. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  456. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  457. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  458. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  459. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  460. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  461. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  468. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  469. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  470. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  471. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  472. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  473. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  474. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  475. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  476. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  477. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  478. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  479. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  480. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  481. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  482. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  483. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  484. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  485. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  486. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  487. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  488. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  489. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  490. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  491. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  492. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  493. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  494. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  495. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  496. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  497. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  498. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  499. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  500. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  501. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  502. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  513. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  514. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  515. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  516. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  517. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  518. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  519. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  520. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  521. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  522. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  523. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  524. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  525. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  526. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  527. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  528. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  529. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  530. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  531. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  532. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  533. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  534. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  535. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  536. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  537. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  538. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  539. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  540. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  541. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  542. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  543. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  544. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  545. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  546. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  547. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  548. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  549. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  550. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  551. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  552. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  553. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  554. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  555. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  556. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  557. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  558. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  559. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  560. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  561. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  562. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  563. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  564. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  565. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  566. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  567. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  568. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  569. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  570. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  571. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  572. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  573. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  574. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  575. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  576. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  577. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  578. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  579. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  580. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  581. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  582. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  583. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  584. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  585. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  586. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  587. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  588. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  589. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  590. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  591. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  592. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  593. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  594. package/dist/core/code/engine/core/logger.js +339 -0
  595. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  596. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  597. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  598. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  599. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  600. package/dist/core/code/engine/lib/utils.js +121 -0
  601. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  602. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  603. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  604. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  605. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  606. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  607. package/dist/core/code/engine/storage/branch-index.js +72 -0
  608. package/dist/core/code/engine/storage/file-hash.js +95 -0
  609. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  610. package/dist/core/code/engine/storage/git.js +555 -0
  611. package/dist/core/code/engine/storage/index-lock.js +664 -0
  612. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  613. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  614. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  615. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  616. package/dist/core/code/engine/types/pipeline.js +2 -0
  617. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  618. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  619. package/dist/core/code/shared/graph/types.js +8 -0
  620. package/dist/core/code/shared/index.js +105 -0
  621. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  622. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  623. package/dist/core/code/shared/integrations/retry.js +70 -0
  624. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  625. package/dist/core/code/shared/language-detection.js +162 -0
  626. package/dist/core/code/shared/languages.js +27 -0
  627. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  628. package/dist/core/code/shared/mro-strategy.js +2 -0
  629. package/dist/core/code/shared/pipeline.js +5 -0
  630. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  631. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  632. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  633. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  634. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  635. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  636. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  637. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  638. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  639. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  640. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  641. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  642. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  643. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  644. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  645. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  646. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  647. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  648. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  649. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  650. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  651. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  652. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  653. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  654. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  655. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  656. package/dist/core/code/shared/test-helpers.js +17 -0
  657. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  658. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  659. package/dist/core/timeline/cli.d.ts.map +1 -1
  660. package/dist/core/timeline/cli.js +13 -6
  661. package/dist/core/timeline/cli.js.map +1 -1
  662. package/dist/core/timeline/debris.d.ts +20 -0
  663. package/dist/core/timeline/debris.d.ts.map +1 -0
  664. package/dist/core/timeline/debris.js +124 -0
  665. package/dist/core/timeline/debris.js.map +1 -0
  666. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  667. package/dist/core/timeline/hook-runner.js +3 -1
  668. package/dist/core/timeline/hook-runner.js.map +1 -1
  669. package/dist/core/timeline/hooks.d.ts.map +1 -1
  670. package/dist/core/timeline/hooks.js +13 -5
  671. package/dist/core/timeline/hooks.js.map +1 -1
  672. package/dist/core/timeline/installer.d.ts +2 -0
  673. package/dist/core/timeline/installer.d.ts.map +1 -1
  674. package/dist/core/timeline/installer.js +12 -0
  675. package/dist/core/timeline/installer.js.map +1 -1
  676. package/dist/core/timeline/project-root.d.ts +21 -0
  677. package/dist/core/timeline/project-root.d.ts.map +1 -0
  678. package/dist/core/timeline/project-root.js +83 -0
  679. package/dist/core/timeline/project-root.js.map +1 -0
  680. package/package.json +1 -1
@@ -0,0 +1,763 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCppParser = getCppParser;
7
+ exports.getCppScopeQuery = getCppScopeQuery;
8
+ const tree_sitter_1 = __importDefault(require("tree-sitter"));
9
+ const node_module_1 = require("node:module");
10
+ // 懒加载(spec §7/§13):tree-sitter-cpp 移至 devDependencies,生产 --omit=dev 不装。
11
+ // 首次用到时按需 require + 缓存;失败 → null,该语言降级为结构层收录,不阻断 analyze。
12
+ const _require = (0, node_module_1.createRequire)(__filename);
13
+ let _cppGrammar;
14
+ const loadCppGrammar = () => {
15
+ if (_cppGrammar !== undefined)
16
+ return _cppGrammar;
17
+ try {
18
+ _cppGrammar = _require('tree-sitter-cpp');
19
+ }
20
+ catch {
21
+ _cppGrammar = null;
22
+ }
23
+ return _cppGrammar;
24
+ };
25
+ const CPP_SCOPE_QUERY = `
26
+ ;; ─── Scopes ──────────────────────────────────────────────────────────
27
+ (translation_unit) @scope.module
28
+ (namespace_definition) @scope.namespace
29
+ (class_specifier) @scope.class
30
+ (struct_specifier) @scope.class
31
+ (function_definition) @scope.function
32
+ (lambda_expression) @scope.function
33
+ (compound_statement) @scope.block
34
+ (if_statement) @scope.block
35
+ (for_statement) @scope.block
36
+ (for_range_loop) @scope.block
37
+ (while_statement) @scope.block
38
+ (do_statement) @scope.block
39
+ (switch_statement) @scope.block
40
+ (case_statement) @scope.block
41
+ (try_statement) @scope.block
42
+ (catch_clause) @scope.block
43
+
44
+ ;; ─── Declarations — namespace ────────────────────────────────────────
45
+ (namespace_definition
46
+ name: (namespace_identifier) @declaration.name) @declaration.namespace
47
+
48
+ ;; Anonymous namespace (no name child) — captured as scope only, names
49
+ ;; inside are marked file-local by captures.ts.
50
+
51
+ ;; ─── Declarations — class / struct (named) ───────────────────────────
52
+ (class_specifier
53
+ name: (type_identifier) @declaration.name
54
+ body: (field_declaration_list)) @declaration.class
55
+
56
+ (class_specifier
57
+ name: (template_type
58
+ (type_identifier) @declaration.name
59
+ (template_argument_list) @declaration.template-arguments)
60
+ body: (field_declaration_list)) @declaration.class
61
+
62
+ (struct_specifier
63
+ name: (type_identifier) @declaration.name
64
+ body: (field_declaration_list)) @declaration.struct
65
+
66
+ (struct_specifier
67
+ name: (template_type
68
+ (type_identifier) @declaration.name
69
+ (template_argument_list) @declaration.template-arguments)
70
+ body: (field_declaration_list)) @declaration.struct
71
+
72
+ ;; Declarations — struct (typedef struct { ... } Name)
73
+ (type_definition
74
+ type: (struct_specifier
75
+ body: (field_declaration_list))
76
+ declarator: (type_identifier) @declaration.name) @declaration.struct
77
+
78
+ ;; ─── Declarations — class / struct inside template_declaration ───────
79
+ ;; \`parameters:\` is the DECLARED parameter list (\`template <class T>\`), which
80
+ ;; lives on the template_declaration and not on the specifier — the opposite
81
+ ;; nesting from \`@declaration.template-arguments\` above, which is part of the
82
+ ;; specifier's own NAME. A partial specialization carries both, and that pairing
83
+ ;; is the only thing separating it from a full specialization written against
84
+ ;; the identical arguments.
85
+ ;;
86
+ ;; These four patterns are TWINS of the four standalone specifier patterns
87
+ ;; above: a templated struct matches both, minting two defs with one id, and
88
+ ;; only this half can see the parameter list. The duplicate-declaration backfill
89
+ ;; in scope-extractor.ts is what stops match order from deciding which twin
90
+ ;; keeps the parameters.
91
+ (template_declaration
92
+ parameters: (template_parameter_list) @declaration.type-parameters
93
+ (class_specifier
94
+ name: (type_identifier) @declaration.name
95
+ body: (field_declaration_list)) @declaration.class)
96
+
97
+ (template_declaration
98
+ parameters: (template_parameter_list) @declaration.type-parameters
99
+ (class_specifier
100
+ name: (template_type
101
+ (type_identifier) @declaration.name
102
+ (template_argument_list) @declaration.template-arguments)
103
+ body: (field_declaration_list)) @declaration.class)
104
+
105
+ (template_declaration
106
+ parameters: (template_parameter_list) @declaration.type-parameters
107
+ (struct_specifier
108
+ name: (type_identifier) @declaration.name
109
+ body: (field_declaration_list)) @declaration.struct)
110
+
111
+ (template_declaration
112
+ parameters: (template_parameter_list) @declaration.type-parameters
113
+ (struct_specifier
114
+ name: (template_type
115
+ (type_identifier) @declaration.name
116
+ (template_argument_list) @declaration.template-arguments)
117
+ body: (field_declaration_list)) @declaration.struct)
118
+
119
+ ;; ─── Declarations — enum ─────────────────────────────────────────────
120
+ (enum_specifier
121
+ name: (type_identifier) @declaration.name) @declaration.enum
122
+
123
+ ;; ─── Declarations — enum (typedef enum { ... } Name) ─────────────────
124
+ (type_definition
125
+ type: (enum_specifier
126
+ body: (enumerator_list))
127
+ declarator: (type_identifier) @declaration.name) @declaration.enum
128
+
129
+ ;; ─── Declarations — enum constants ───────────────────────────────────
130
+ (enumerator
131
+ name: (identifier) @declaration.name) @declaration.const
132
+
133
+ ;; ─── Declarations — function definition (plain identifier) ──────────
134
+ (function_definition
135
+ declarator: (function_declarator
136
+ declarator: (identifier) @declaration.name)) @declaration.function
137
+
138
+ ;; Lambda bindings (\`auto f = [](int x){ … };\`). The \`@declaration.function\`
139
+ ;; anchor sits on the INNER lambda_expression so its range aligns with
140
+ ;; \`(lambda_expression) @scope.function\` above; otherwise the def is owned by
141
+ ;; the enclosing scope and calls inside the lambda lose caller attribution.
142
+ ;; Mirrors the TypeScript arrow patterns (#2687).
143
+ (declaration
144
+ declarator: (init_declarator
145
+ declarator: (identifier) @declaration.name
146
+ value: (lambda_expression) @declaration.function))
147
+
148
+ ;; ─── Declarations — function definition with pointer return ─────────
149
+ (function_definition
150
+ declarator: (pointer_declarator
151
+ declarator: (function_declarator
152
+ declarator: (identifier) @declaration.name))) @declaration.function
153
+
154
+ ;; ─── Declarations — out-of-class method (qualified_identifier) ──────
155
+ (function_definition
156
+ declarator: (function_declarator
157
+ declarator: (qualified_identifier
158
+ name: (identifier) @declaration.name))) @declaration.method
159
+
160
+ ;; Out-of-class operator method: Point::operator+(...)
161
+ (function_definition
162
+ declarator: (function_declarator
163
+ declarator: (qualified_identifier
164
+ name: (operator_name) @declaration.name))) @declaration.method
165
+
166
+ ;; ─── Declarations — out-of-class method with pointer return ─────────
167
+ (function_definition
168
+ declarator: (pointer_declarator
169
+ declarator: (function_declarator
170
+ declarator: (qualified_identifier
171
+ name: (identifier) @declaration.name)))) @declaration.method
172
+
173
+ ;; ─── Declarations — out-of-class method (destructor_name) ───────────
174
+ (function_definition
175
+ declarator: (function_declarator
176
+ declarator: (qualified_identifier
177
+ name: (destructor_name) @declaration.name))) @declaration.method
178
+
179
+ ;; ─── Declarations — template function definition ────────────────────
180
+ (template_declaration
181
+ (function_definition
182
+ declarator: (function_declarator
183
+ declarator: (identifier) @declaration.name)) @declaration.function)
184
+
185
+ ;; ─── Declarations — template method (qualified) ─────────────────────
186
+ (template_declaration
187
+ (function_definition
188
+ declarator: (function_declarator
189
+ declarator: (qualified_identifier
190
+ name: (identifier) @declaration.name))) @declaration.method)
191
+
192
+ ;; ─── Declarations — inline method in class body (field_identifier) ──
193
+ ;; tree-sitter-cpp uses field_identifier for names inside class bodies
194
+ (function_definition
195
+ declarator: (function_declarator
196
+ declarator: (field_identifier) @declaration.name)) @declaration.method
197
+
198
+ ;; Inline operator method in class body: Point operator+(Point) const { ... }
199
+ (function_definition
200
+ declarator: (function_declarator
201
+ declarator: (operator_name) @declaration.name)) @declaration.method
202
+
203
+ ;; ─── Declarations — inline method with pointer return (field_identifier) ──
204
+ ;; Covers: User* lookup(int id) { ... } inside a class body
205
+ ;; AST: function_definition > pointer_declarator > function_declarator > field_identifier
206
+ (function_definition
207
+ declarator: (pointer_declarator
208
+ declarator: (function_declarator
209
+ declarator: (field_identifier) @declaration.name))) @declaration.method
210
+
211
+ ;; ─── Declarations — inline method with reference return (field_identifier) ──
212
+ ;; Covers: User& getRef() { ... } inside a class body
213
+ (function_definition
214
+ declarator: (reference_declarator
215
+ (function_declarator
216
+ declarator: (field_identifier) @declaration.name))) @declaration.method
217
+
218
+ ;; Inline operator method with reference return: Point& operator+=(Point) { ... }
219
+ (field_declaration_list
220
+ (function_definition
221
+ declarator: (reference_declarator
222
+ (function_declarator
223
+ declarator: (operator_name) @declaration.name))) @declaration.method)
224
+
225
+ ;; Free operator definition with reference return: std::ostream& operator<<(...) { ... }
226
+ (translation_unit
227
+ (function_definition
228
+ declarator: (reference_declarator
229
+ (function_declarator
230
+ declarator: (operator_name) @declaration.name))) @declaration.function)
231
+
232
+ (namespace_definition
233
+ body: (declaration_list
234
+ (function_definition
235
+ declarator: (reference_declarator
236
+ (function_declarator
237
+ declarator: (operator_name) @declaration.name))) @declaration.function))
238
+
239
+ ;; ─── Declarations — function prototype (forward declaration) ────────
240
+ (declaration
241
+ declarator: (function_declarator
242
+ declarator: (identifier) @declaration.name)) @declaration.function
243
+
244
+ ;; tree-sitter-cpp 0.23 represents a deleted free function as an
245
+ ;; init_declarator whose value is a delete_expression.
246
+ (declaration
247
+ declarator: (init_declarator
248
+ declarator: (function_declarator
249
+ declarator: (identifier) @declaration.name)
250
+ value: (delete_expression))) @declaration.function
251
+
252
+ ;; Deleted free operator declaration.
253
+ (declaration
254
+ declarator: (init_declarator
255
+ declarator: (function_declarator
256
+ declarator: (operator_name) @declaration.name)
257
+ value: (delete_expression))) @declaration.function
258
+
259
+ ;; Deleted free function with a pointer return type.
260
+ (declaration
261
+ declarator: (init_declarator
262
+ declarator: (pointer_declarator
263
+ declarator: (function_declarator
264
+ declarator: (identifier) @declaration.name))
265
+ value: (delete_expression))) @declaration.function
266
+
267
+ ;; Free operator prototype: std::ostream& operator<<(std::ostream&, T)
268
+ (declaration
269
+ declarator: (function_declarator
270
+ declarator: (operator_name) @declaration.name)) @declaration.function
271
+
272
+ ;; ─── Declarations — function prototype with pointer return ──────────
273
+ (declaration
274
+ declarator: (pointer_declarator
275
+ declarator: (function_declarator
276
+ declarator: (identifier) @declaration.name))) @declaration.function
277
+
278
+ ;; Free operator prototype with reference return.
279
+ (declaration
280
+ declarator: (reference_declarator
281
+ (function_declarator
282
+ declarator: (operator_name) @declaration.name))) @declaration.function
283
+
284
+ ;; ─── Declarations — typedef ─────────────────────────────────────────
285
+ (type_definition
286
+ declarator: (type_identifier) @declaration.name) @declaration.typedef
287
+
288
+ ;; ─── Declarations — type alias (using Name = Type) ──────────────────
289
+ (alias_declaration
290
+ name: (type_identifier) @declaration.name) @declaration.typedef
291
+
292
+ ;; ─── Declarations — method prototype in class body (forward decl) ────
293
+ ;; Covers: class User { void save(); std::string getName(); };
294
+ ;; AST: field_declaration > function_declarator > field_identifier
295
+ (field_declaration
296
+ declarator: (function_declarator
297
+ declarator: (field_identifier) @declaration.name)) @declaration.method
298
+
299
+ ;; Operator method prototype in class body: Point operator+(Point) const;
300
+ (field_declaration
301
+ declarator: (function_declarator
302
+ declarator: (operator_name) @declaration.name)) @declaration.method
303
+
304
+ ;; Method prototype with pointer return: User* lookup(int id);
305
+ (field_declaration
306
+ declarator: (pointer_declarator
307
+ declarator: (function_declarator
308
+ declarator: (field_identifier) @declaration.name))) @declaration.method
309
+
310
+ ;; Constructor prototype in class body: User(int id);
311
+ (field_declaration_list
312
+ (declaration
313
+ declarator: (function_declarator
314
+ declarator: (identifier) @declaration.name)) @declaration.method)
315
+
316
+ ;; Method prototype with reference return: User& getRef();
317
+ (field_declaration
318
+ declarator: (reference_declarator
319
+ (function_declarator
320
+ declarator: (field_identifier) @declaration.name))) @declaration.method
321
+
322
+ (field_declaration
323
+ declarator: (reference_declarator
324
+ (function_declarator
325
+ declarator: (operator_name) @declaration.name))) @declaration.method
326
+
327
+ ;; ─── Declarations — fields ──────────────────────────────────────────
328
+ (field_declaration
329
+ declarator: (field_identifier) @declaration.name) @declaration.field
330
+
331
+ ;; Declarations — fields (pointer)
332
+ (field_declaration
333
+ declarator: (pointer_declarator
334
+ declarator: (field_identifier) @declaration.name)) @declaration.field
335
+
336
+ ;; Declarations — fields (reference)
337
+ (field_declaration
338
+ declarator: (reference_declarator
339
+ (field_identifier) @declaration.name)) @declaration.field
340
+
341
+ ;; ─── Declarations — variables (with initializer) ────────────────────
342
+ (declaration
343
+ declarator: (init_declarator
344
+ declarator: (identifier) @declaration.name)) @declaration.variable
345
+
346
+ ;; ─── Declarations — variables (without initializer) ─────────────────
347
+ ;; Covers non-leading declarators in mixed declaration lists.
348
+ (declaration
349
+ declarator: (identifier) @declaration.name) @declaration.variable
350
+
351
+ (declaration
352
+ declarator: (pointer_declarator
353
+ declarator: (identifier) @declaration.name)) @declaration.variable
354
+
355
+ ;; ─── Declarations — macro definitions ───────────────────────────────
356
+ (preproc_def
357
+ name: (identifier) @declaration.name) @declaration.macro
358
+
359
+ (preproc_function_def
360
+ name: (identifier) @declaration.name) @declaration.macro
361
+
362
+ ;; ─── Imports — #include ─────────────────────────────────────────────
363
+ (preproc_include) @import.statement
364
+
365
+ ;; ─── Imports — using declaration ─────────────────────────────────────
366
+ ;; Both "using namespace std;" and "using std::vector;" are
367
+ ;; using_declaration nodes in tree-sitter-cpp. The captures.ts
368
+ ;; differentiates between them by checking for a "namespace" anonymous
369
+ ;; child token.
370
+ (using_declaration) @import.using-decl
371
+
372
+ ;; ─── Type bindings — parameter annotations ──────────────────────────
373
+ (parameter_declaration
374
+ type: (_) @type-binding.type
375
+ declarator: (identifier) @type-binding.name) @type-binding.parameter
376
+
377
+ ;; Type bindings — reference parameter (const std::string& name)
378
+ (parameter_declaration
379
+ type: (_) @type-binding.type
380
+ declarator: (reference_declarator
381
+ (identifier) @type-binding.name)) @type-binding.parameter
382
+
383
+ ;; Type bindings — pointer parameter (User* ptr)
384
+ (parameter_declaration
385
+ type: (_) @type-binding.type
386
+ declarator: (pointer_declarator
387
+ declarator: (identifier) @type-binding.name)) @type-binding.parameter
388
+
389
+ ;; ─── Type bindings — variable with type (init_declarator) ───────────
390
+ ;; Covers: User user("alice"), User user = ..., int x = 0
391
+ (declaration
392
+ type: (_) @type-binding.type
393
+ declarator: (init_declarator
394
+ declarator: (identifier) @type-binding.name)) @type-binding.assignment
395
+
396
+ ;; ─── Type bindings — plain declaration (no initializer) ─────────────
397
+ ;; Covers: User user;
398
+ (declaration
399
+ type: (type_identifier) @type-binding.type
400
+ declarator: (identifier) @type-binding.name) @type-binding.annotation
401
+
402
+ ;; Covers: List<User> users;
403
+ (declaration
404
+ type: (template_type) @type-binding.type
405
+ declarator: (identifier) @type-binding.name) @type-binding.annotation
406
+
407
+ ;; ─── Type bindings — pointer variable declaration ───────────────────
408
+ ;; Covers: User* ptr = new User()
409
+ (declaration
410
+ type: (type_identifier) @type-binding.type
411
+ declarator: (init_declarator
412
+ declarator: (pointer_declarator
413
+ declarator: (identifier) @type-binding.name))) @type-binding.annotation
414
+
415
+ ;; ─── Type bindings — auto + constructor call ────────────────────────
416
+ ;; Covers: auto user = User("alice")
417
+ ;; AST: declaration > placeholder_type_specifier/auto > init_declarator > identifier + call_expression > identifier
418
+ (declaration
419
+ type: (placeholder_type_specifier)
420
+ declarator: (init_declarator
421
+ declarator: (identifier) @type-binding.name
422
+ value: (call_expression
423
+ function: (identifier) @type-binding.type))) @type-binding.constructor
424
+
425
+ ;; ─── Type bindings — auto + brace-init (compound_literal_expression) ─
426
+ ;; Covers: auto user = User{}, auto user = User{args}
427
+ ;; AST: declaration > placeholder_type_specifier/auto > init_declarator > identifier + compound_literal_expression > type_identifier
428
+ (declaration
429
+ type: (placeholder_type_specifier)
430
+ declarator: (init_declarator
431
+ declarator: (identifier) @type-binding.name
432
+ value: (compound_literal_expression
433
+ type: (type_identifier) @type-binding.type))) @type-binding.constructor
434
+
435
+ ;; ─── Type bindings — auto + scoped brace-init (qualified) ───────────
436
+ ;; Covers: auto client = ns::HttpClient{}
437
+ ;; AST: compound_literal_expression > qualified_identifier > type_identifier
438
+ (declaration
439
+ type: (placeholder_type_specifier)
440
+ declarator: (init_declarator
441
+ declarator: (identifier) @type-binding.name
442
+ value: (compound_literal_expression
443
+ type: (qualified_identifier
444
+ name: (type_identifier) @type-binding.type)))) @type-binding.constructor
445
+
446
+ ;; ─── Type bindings — auto + new expression ──────────────────────────
447
+ ;; Covers: auto user = new User(name)
448
+ ;; AST: declaration > placeholder_type_specifier/auto > init_declarator > identifier + new_expression > type_identifier
449
+ (declaration
450
+ type: (placeholder_type_specifier)
451
+ declarator: (init_declarator
452
+ declarator: (identifier) @type-binding.name
453
+ value: (new_expression
454
+ type: (type_identifier) @type-binding.type))) @type-binding.constructor
455
+
456
+ ;; ─── Type bindings — auto + qualified template factory (std::make_shared<Dog>()) ─
457
+ ;; AST: declaration(1 > placeholder_type_specifier(2)2 > init_declarator(3 >
458
+ ;; identifier(4)4 > call_expression(5 > qualified_identifier(6 >
459
+ ;; template_function(7 > template_argument_list(8 > type_descriptor(9 >
460
+ ;; type_identifier(10)10 )9 )8 )7 )6 )5 )3 )1
461
+ (declaration
462
+ type: (placeholder_type_specifier)
463
+ declarator: (init_declarator
464
+ declarator: (identifier) @type-binding.name
465
+ value: (call_expression
466
+ function: (qualified_identifier
467
+ name: (template_function
468
+ arguments: (template_argument_list
469
+ (type_descriptor
470
+ type: (type_identifier) @type-binding.type))))))) @type-binding.constructor
471
+
472
+ ;; ─── Type bindings — auto + bare template factory (make_shared<Dog>()) ───────
473
+ ;; Same but without qualified_identifier wrapper — one fewer nesting level
474
+ (declaration
475
+ type: (placeholder_type_specifier)
476
+ declarator: (init_declarator
477
+ declarator: (identifier) @type-binding.name
478
+ value: (call_expression
479
+ function: (template_function
480
+ arguments: (template_argument_list
481
+ (type_descriptor
482
+ type: (type_identifier) @type-binding.type)))))) @type-binding.constructor
483
+
484
+ ;; ─── Type bindings — auto alias assignment ──────────────────────────
485
+ ;; Covers: auto alias = existingVar (RHS is a plain identifier)
486
+ ;; AST: declaration > placeholder_type_specifier/auto > init_declarator > identifier + identifier
487
+ (declaration
488
+ type: (placeholder_type_specifier)
489
+ declarator: (init_declarator
490
+ declarator: (identifier) @type-binding.name
491
+ value: (identifier) @type-binding.type)) @type-binding.alias
492
+
493
+ ;; ─── Type bindings — auto + member access (field_expression) ────────
494
+ ;; Covers: auto addr = user.address (RHS is obj.field)
495
+ ;; AST: declaration > placeholder_type_specifier > init_declarator > identifier + field_expression
496
+ ;; We capture the field name as @type-binding.type so the compound-receiver
497
+ ;; chain resolver can look it up on the receiver class scope.
498
+ ;; The full obj.field text is synthesized by interpret.ts into a dotted
499
+ ;; rawName for chain-follow resolution.
500
+ (declaration
501
+ type: (placeholder_type_specifier)
502
+ declarator: (init_declarator
503
+ declarator: (identifier) @type-binding.name
504
+ value: (field_expression
505
+ argument: (_) @type-binding.member-access-receiver
506
+ field: (field_identifier) @type-binding.type))) @type-binding.member-access
507
+
508
+ ;; ─── Type bindings — function return type ───────────────────────────
509
+ ;; Covers: User getUser() { ... }
510
+ ;; AST: function_definition > type_identifier + function_declarator > identifier
511
+ (function_definition
512
+ type: (type_identifier) @type-binding.type
513
+ declarator: (function_declarator
514
+ declarator: (identifier) @type-binding.name)) @type-binding.return
515
+
516
+ ;; Return type — out-of-class method: User Class::getUser() { ... }
517
+ (function_definition
518
+ type: (type_identifier) @type-binding.type
519
+ declarator: (function_declarator
520
+ declarator: (qualified_identifier
521
+ name: (identifier) @type-binding.name))) @type-binding.return
522
+
523
+ ;; Return type — pointer return: User* getUser() { ... }
524
+ (function_definition
525
+ type: (type_identifier) @type-binding.type
526
+ declarator: (pointer_declarator
527
+ declarator: (function_declarator
528
+ declarator: (identifier) @type-binding.name))) @type-binding.return
529
+
530
+ ;; ─── Type bindings — inline method return type ──────────────────────
531
+ ;; Covers: class Foo { User getUser() { ... } };
532
+ (function_definition
533
+ type: (type_identifier) @type-binding.type
534
+ declarator: (function_declarator
535
+ declarator: (field_identifier) @type-binding.name)) @type-binding.return
536
+
537
+ ;; Inline method pointer return type: class Foo { User* lookup(int) { ... } };
538
+ (function_definition
539
+ type: (type_identifier) @type-binding.type
540
+ declarator: (pointer_declarator
541
+ declarator: (function_declarator
542
+ declarator: (field_identifier) @type-binding.name))) @type-binding.return
543
+
544
+ ;; ─── Type bindings — method prototype return type in class body ──────
545
+ ;; Covers: class User { User* lookup(int); std::string getName(); };
546
+ ;; AST: field_declaration > function_declarator > field_identifier
547
+ (field_declaration
548
+ type: (type_identifier) @type-binding.type
549
+ declarator: (function_declarator
550
+ declarator: (field_identifier) @type-binding.name)) @type-binding.return
551
+
552
+ ;; Method prototype pointer return type: User* lookup(int id);
553
+ (field_declaration
554
+ type: (type_identifier) @type-binding.type
555
+ declarator: (pointer_declarator
556
+ declarator: (function_declarator
557
+ declarator: (field_identifier) @type-binding.name))) @type-binding.return
558
+
559
+ ;; ─── Type bindings — field type declarations (class members) ────────
560
+ ;; Covers: class User { Address address; };
561
+ (field_declaration
562
+ type: (type_identifier) @type-binding.type
563
+ declarator: (field_identifier) @type-binding.name) @type-binding.field
564
+
565
+ ;; Field pointer type: Address* address;
566
+ (field_declaration
567
+ type: (type_identifier) @type-binding.type
568
+ declarator: (pointer_declarator
569
+ declarator: (field_identifier) @type-binding.name)) @type-binding.field
570
+
571
+ ;; Field reference type: Address& address;
572
+ (field_declaration
573
+ type: (type_identifier) @type-binding.type
574
+ declarator: (reference_declarator
575
+ (field_identifier) @type-binding.name)) @type-binding.field
576
+
577
+ ;; Generic field type: Repo<User> repo; (#2833)
578
+ ;; The three rules above all require type: (type_identifier), so a member whose
579
+ ;; type carries template arguments is a template_type and matched NONE of them —
580
+ ;; the field got no type binding at all, and every call through it lost its edge
581
+ ;; in BOTH spellings (repo.save() and this->repo.save()), while the same type in
582
+ ;; a LOCAL resolved fine because the local declaration rules gained their
583
+ ;; template_type variant long ago (see "Covers: List<User> users;" above).
584
+ ;; These three mirror the three above, one per declarator shape. Written as
585
+ ;; separate patterns rather than one alternation: a node-type alternation in a
586
+ ;; field position is the tree-sitter 0.21 hazard this repo has been bitten by
587
+ ;; before.
588
+ (field_declaration
589
+ type: (template_type) @type-binding.type
590
+ declarator: (field_identifier) @type-binding.name) @type-binding.field
591
+
592
+ ;; Generic field, pointer: Repo<User>* repo;
593
+ (field_declaration
594
+ type: (template_type) @type-binding.type
595
+ declarator: (pointer_declarator
596
+ declarator: (field_identifier) @type-binding.name)) @type-binding.field
597
+
598
+ ;; Generic field, reference: Repo<User>& repo;
599
+ (field_declaration
600
+ type: (template_type) @type-binding.type
601
+ declarator: (reference_declarator
602
+ (field_identifier) @type-binding.name)) @type-binding.field
603
+
604
+ ;; ─── Field type, QUALIFIED: ns::Address addr; std::vector<Item> items; ─
605
+ ;; The six rules above require the type node to BE a type_identifier or a
606
+ ;; template_type, and a qualified member type is NEITHER: tree-sitter-cpp parses
607
+ ;; ns::Address as a qualified_identifier WRAPPING the type_identifier, and
608
+ ;; std::vector<Item> as one wrapping the template_type. So every qualified
609
+ ;; member — generic or not — matched none of the six and bound nothing, which
610
+ ;; covers the commonest member spellings in real C++ (std::string, std::mutex,
611
+ ;; std::vector<T>, ns::Config).
612
+ ;;
613
+ ;; ONE PATTERN PER DECLARATOR SHAPE, MATCHING THE OUTER qualified_identifier,
614
+ ;; and that is the whole design. A tree-sitter query cannot match a node at
615
+ ;; arbitrary nesting depth, and a::b::c::Repo<User> nests one
616
+ ;; qualified_identifier per qualifier — so enumerating the inner node instead
617
+ ;; costs 3 patterns per depth per genericity and STILL ends at whatever depth
618
+ ;; the last author enumerated (that boundary was real: depth 3 was uncaptured).
619
+ ;; Matching the outer node is depth-agnostic and genericity-agnostic, and it is
620
+ ;; a single node type in the field position, not an alternation — the
621
+ ;; tree-sitter 0.21 hazard this repo has been bitten by before.
622
+ ;;
623
+ ;; The QUALIFIER IS THEN DROPPED, by cppQualifiedTail in interpret.ts, not
624
+ ;; here — and dropping it was measured rather than assumed. Recording
625
+ ;; ns::Repo<User> resolves to NOTHING: findClassBindingInScope's dotted-tail
626
+ ;; fallback splits on "." and C++ writes "::", and resolveClassBindingForName's
627
+ ;; generic branch then looks up the base ns::Repo, which is not a key either
628
+ ;; because C++ emits no @declaration.qualified_name and indexes ns::Repo under
629
+ ;; Repo. Reducing to the tail lands on exactly the path the BARE spelling
630
+ ;; already takes — one class-like match or decline — so a qualified member field
631
+ ;; behaves like the bare one instead of like nothing. A tail that names no
632
+ ;; workspace class (std::string with no "class string" in the repo) binds
633
+ ;; nothing and emits nothing, which is why this is a miss-closing change rather
634
+ ;; than an edge-fabricating one.
635
+ ;;
636
+ ;; Like the six above, each requires the declarator to reach the field_identifier
637
+ ;; DIRECTLY, so a method whose return type is qualified (ns::Thing method();)
638
+ ;; still captures no field — a function_declarator sits in between and none of
639
+ ;; these match it. Same for a function-pointer member, a using/typedef alias, a
640
+ ;; friend declaration and an operator declaration.
641
+ (field_declaration
642
+ type: (qualified_identifier) @type-binding.type
643
+ declarator: (field_identifier) @type-binding.name) @type-binding.field
644
+
645
+ ;; Qualified field, pointer: ns::Address* addr; std::unique_ptr<Repo>* repo;
646
+ (field_declaration
647
+ type: (qualified_identifier) @type-binding.type
648
+ declarator: (pointer_declarator
649
+ declarator: (field_identifier) @type-binding.name)) @type-binding.field
650
+
651
+ ;; Qualified field, reference: ns::Address& addr; std::vector<Item>& items;
652
+ (field_declaration
653
+ type: (qualified_identifier) @type-binding.type
654
+ declarator: (reference_declarator
655
+ (field_identifier) @type-binding.name)) @type-binding.field
656
+
657
+ ;; ─── References — constructor calls (new Foo()) ─────────────────────
658
+ (new_expression
659
+ type: (type_identifier) @reference.name) @reference.call.constructor
660
+
661
+ ;; Constructor call with qualified type: new ns::Foo()
662
+ (new_expression
663
+ type: (qualified_identifier
664
+ name: (type_identifier) @reference.name)) @reference.call.constructor
665
+
666
+ ;; ─── References — free calls ────────────────────────────────────────
667
+ (call_expression
668
+ function: (identifier) @reference.name) @reference.call.free
669
+
670
+ ;; ─── References — qualified calls (Namespace func or Class method) ───
671
+ ;; Capture the LHS of scope-resolution as the explicit receiver so
672
+ ;; qualified static member calls route through receiver-bound-calls
673
+ ;; Case 2 (class-name receiver) path. Without the receiver capture,
674
+ ;; qualified calls have no explicit receiver and class methods cannot
675
+ ;; resolve through receiver-bound paths.
676
+ (call_expression
677
+ function: (qualified_identifier
678
+ scope: (_) @reference.receiver
679
+ name: (identifier) @reference.name)) @reference.call.qualified
680
+
681
+ ;; Nested qualified receiver: outer::v1::Base<T>::f()
682
+ ;; tree-sitter-cpp nests this as qualified_identifier(name:
683
+ ;; qualified_identifier(scope: qualified_identifier(...), name: identifier)).
684
+ ;; Capturing the innermost receiver still gives isSuperReceiverInContext
685
+ ;; enough text to strip qualifiers/template args down to Base.
686
+ (call_expression
687
+ function: (qualified_identifier
688
+ name: (qualified_identifier
689
+ scope: (_) @reference.receiver
690
+ name: (identifier) @reference.name))) @reference.call.qualified
691
+
692
+ ;; Double-nested qualified receiver: outer::v1::Base<T>::f()
693
+ (call_expression
694
+ function: (qualified_identifier
695
+ name: (qualified_identifier
696
+ name: (qualified_identifier
697
+ scope: (_) @reference.receiver
698
+ name: (identifier) @reference.name)))) @reference.call.qualified
699
+
700
+ ;; ─── References — member calls (obj.method() / ptr->method()) ───────
701
+ (call_expression
702
+ function: (field_expression
703
+ argument: (_) @reference.receiver
704
+ field: (field_identifier) @reference.name)) @reference.call.member
705
+
706
+ ;; Conservative operator-call support (#1636): model a + b as a
707
+ ;; member-style operator+ lookup, and lhs << rhs as a free
708
+ ;; operator<< lookup. Free operator+(T,T), member operator<<, and
709
+ ;; complex operand expressions remain false negatives for now.
710
+ ;; Built-in operators remain unresolved because no user-defined
711
+ ;; operator target exists.
712
+ (binary_expression
713
+ left: (_) @reference.receiver
714
+ operator: "+" @reference.operator
715
+ right: (_)) @reference.call.member
716
+
717
+ (binary_expression
718
+ left: (_)
719
+ operator: "<<" @reference.operator
720
+ right: (_)) @reference.call.free
721
+
722
+ ;; ─── References — template calls (func<T>()) ────────────────────────
723
+ (call_expression
724
+ function: (template_function
725
+ name: (identifier) @reference.name)) @reference.call.free
726
+
727
+ ;; Note: Ns::func<T>() is parsed as qualified_identifier by tree-sitter-cpp,
728
+ ;; already captured by the qualified calls pattern above.
729
+
730
+ ;; ─── References — field reads ───────────────────────────────────────
731
+ (field_expression
732
+ argument: (_) @reference.receiver
733
+ field: (field_identifier) @reference.name) @reference.read
734
+
735
+ ;; ─── References — field writes (assignment) ─────────────────────────
736
+ (assignment_expression
737
+ left: (field_expression
738
+ argument: (_) @reference.receiver
739
+ field: (field_identifier) @reference.name)) @reference.write
740
+ `;
741
+ let _parser = null;
742
+ let _query = null;
743
+ function getCppParser() {
744
+ if (_parser === null) {
745
+ const grammar = loadCppGrammar();
746
+ if (grammar === null) {
747
+ throw new Error('tree-sitter-cpp grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
748
+ }
749
+ _parser = new tree_sitter_1.default();
750
+ _parser.setLanguage(grammar);
751
+ }
752
+ return _parser;
753
+ }
754
+ function getCppScopeQuery() {
755
+ if (_query === null) {
756
+ const grammar = loadCppGrammar();
757
+ if (grammar === null) {
758
+ throw new Error('tree-sitter-cpp grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
759
+ }
760
+ _query = new tree_sitter_1.default.Query(grammar, CPP_SCOPE_QUERY);
761
+ }
762
+ return _query;
763
+ }