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,690 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typeConfig = exports.THIS_BOUNDARY_NODE_TYPES = void 0;
4
+ const shared_js_1 = require("./shared.js");
5
+ const DECLARATION_NODE_TYPES = new Set([
6
+ 'lexical_declaration',
7
+ 'variable_declaration',
8
+ 'function_declaration', // JSDoc @param on function declarations
9
+ 'method_definition', // JSDoc @param on class methods
10
+ 'public_field_definition', // class field: private users: User[]
11
+ ]);
12
+ const normalizeJsDocType = (raw) => {
13
+ let type = raw.trim();
14
+ // Strip JSDoc nullable/non-nullable prefixes: ?User → User, !User → User
15
+ if (type.startsWith('?') || type.startsWith('!'))
16
+ type = type.slice(1);
17
+ // Strip union with null/undefined/void: User|null → User
18
+ const parts = type
19
+ .split('|')
20
+ .map((p) => p.trim())
21
+ .filter((p) => p !== 'null' && p !== 'undefined' && p !== 'void');
22
+ if (parts.length !== 1)
23
+ return undefined; // ambiguous union
24
+ type = parts[0];
25
+ // Strip module: prefix — module:models.User → models.User
26
+ if (type.startsWith('module:'))
27
+ type = type.slice(7);
28
+ // Take last segment of dotted path: models.User → User
29
+ const segments = type.split('.');
30
+ type = segments[segments.length - 1];
31
+ // Strip generic wrapper: Promise<User> → Promise (base type, not inner)
32
+ const genericMatch = type.match(/^(\w+)\s*</);
33
+ if (genericMatch)
34
+ type = genericMatch[1];
35
+ // Simple identifier check
36
+ if (/^\w+$/.test(type))
37
+ return type;
38
+ return undefined;
39
+ };
40
+ /** Regex to extract JSDoc @param annotations: `@param {Type} name` */
41
+ const JSDOC_PARAM_RE = /@param\s*\{([^}]+)\}\s+\[?(\w+)[\]=]?[^\s]*/g;
42
+ /**
43
+ * Collect JSDoc @param type bindings from comment nodes preceding a function/method.
44
+ * Returns a map of paramName → typeName.
45
+ */
46
+ const collectJsDocParams = (funcNode) => {
47
+ const commentTexts = [];
48
+ let sibling = funcNode.previousSibling;
49
+ while (sibling) {
50
+ if (sibling.type === 'comment') {
51
+ commentTexts.unshift(sibling.text);
52
+ }
53
+ else if (sibling.isNamed && sibling.type !== 'decorator') {
54
+ break;
55
+ }
56
+ sibling = sibling.previousSibling;
57
+ }
58
+ if (commentTexts.length === 0)
59
+ return new Map();
60
+ const params = new Map();
61
+ const commentBlock = commentTexts.join('\n');
62
+ JSDOC_PARAM_RE.lastIndex = 0;
63
+ let match;
64
+ while ((match = JSDOC_PARAM_RE.exec(commentBlock)) !== null) {
65
+ const typeName = normalizeJsDocType(match[1]);
66
+ const paramName = match[2];
67
+ if (typeName) {
68
+ params.set(paramName, typeName);
69
+ }
70
+ }
71
+ return params;
72
+ };
73
+ /**
74
+ * TypeScript: const x: Foo = ..., let x: Foo
75
+ * Also: JSDoc @param annotations on function/method definitions (for .js files).
76
+ */
77
+ const extractDeclaration = (node, env) => {
78
+ // JSDoc @param on functions/methods — pre-populate env with param types
79
+ if (node.type === 'function_declaration' || node.type === 'method_definition') {
80
+ const jsDocParams = collectJsDocParams(node);
81
+ for (const [paramName, typeName] of jsDocParams) {
82
+ if (!env.has(paramName))
83
+ env.set(paramName, typeName);
84
+ }
85
+ return;
86
+ }
87
+ // Class field: `private users: User[]` — public_field_definition has name + type fields directly.
88
+ if (node.type === 'public_field_definition') {
89
+ const nameNode = node.childForFieldName('name');
90
+ const typeAnnotation = node.childForFieldName('type');
91
+ if (!nameNode || !typeAnnotation)
92
+ return;
93
+ const varName = nameNode.text;
94
+ if (!varName)
95
+ return;
96
+ const typeName = (0, shared_js_1.extractSimpleTypeName)(typeAnnotation);
97
+ if (typeName)
98
+ env.set(varName, typeName);
99
+ return;
100
+ }
101
+ for (let i = 0; i < node.namedChildCount; i++) {
102
+ const declarator = node.namedChild(i);
103
+ if (declarator?.type !== 'variable_declarator')
104
+ continue;
105
+ const nameNode = declarator.childForFieldName('name');
106
+ const typeAnnotation = declarator.childForFieldName('type');
107
+ if (!nameNode || !typeAnnotation)
108
+ continue;
109
+ const varName = (0, shared_js_1.extractVarName)(nameNode);
110
+ const typeName = (0, shared_js_1.extractSimpleTypeName)(typeAnnotation);
111
+ if (varName && typeName)
112
+ env.set(varName, typeName);
113
+ }
114
+ };
115
+ /** TypeScript: required_parameter / optional_parameter → name: type */
116
+ const extractParameter = (node, env) => {
117
+ let nameNode = null;
118
+ let typeNode = null;
119
+ if (node.type === 'required_parameter' || node.type === 'optional_parameter') {
120
+ nameNode = node.childForFieldName('pattern') ?? node.childForFieldName('name');
121
+ typeNode = node.childForFieldName('type');
122
+ }
123
+ else {
124
+ // Generic fallback
125
+ nameNode = node.childForFieldName('name') ?? node.childForFieldName('pattern');
126
+ typeNode = node.childForFieldName('type');
127
+ }
128
+ if (!nameNode || !typeNode)
129
+ return;
130
+ const varName = (0, shared_js_1.extractVarName)(nameNode);
131
+ const typeName = (0, shared_js_1.extractSimpleTypeName)(typeNode);
132
+ if (varName && typeName)
133
+ env.set(varName, typeName);
134
+ };
135
+ /** TypeScript: const x = new User() — infer type from new_expression */
136
+ const extractInitializer = (node, env, _classNames) => {
137
+ for (let i = 0; i < node.namedChildCount; i++) {
138
+ const declarator = node.namedChild(i);
139
+ if (declarator?.type !== 'variable_declarator')
140
+ continue;
141
+ // Only activate when there is no explicit type annotation — extractDeclaration already
142
+ // handles the annotated case and this function is called as a fallback.
143
+ if (declarator.childForFieldName('type') !== null)
144
+ continue;
145
+ let valueNode = declarator.childForFieldName('value');
146
+ // Unwrap `new User() as T`, `new User()!`, and double-cast `new User() as unknown as T`
147
+ while (valueNode?.type === 'as_expression' || valueNode?.type === 'non_null_expression') {
148
+ valueNode = valueNode.firstNamedChild;
149
+ }
150
+ if (valueNode?.type !== 'new_expression')
151
+ continue;
152
+ const constructorNode = valueNode.childForFieldName('constructor');
153
+ if (!constructorNode)
154
+ continue;
155
+ const nameNode = declarator.childForFieldName('name');
156
+ if (!nameNode)
157
+ continue;
158
+ const varName = (0, shared_js_1.extractVarName)(nameNode);
159
+ const typeName = (0, shared_js_1.extractSimpleTypeName)(constructorNode);
160
+ if (varName && typeName)
161
+ env.set(varName, typeName);
162
+ }
163
+ };
164
+ /**
165
+ * TypeScript/JavaScript: const user = getUser() — variable_declarator with call_expression value.
166
+ * Only matches unannotated declarators; annotated ones are handled by extractDeclaration.
167
+ * await is unwrapped: const user = await fetchUser() → callee = 'fetchUser'.
168
+ */
169
+ const scanConstructorBinding = (node) => {
170
+ if (node.type !== 'variable_declarator')
171
+ return undefined;
172
+ if ((0, shared_js_1.hasTypeAnnotation)(node))
173
+ return undefined;
174
+ const nameNode = node.childForFieldName('name');
175
+ if (!nameNode || nameNode.type !== 'identifier')
176
+ return undefined;
177
+ const value = (0, shared_js_1.unwrapAwait)(node.childForFieldName('value'));
178
+ if (!value || value.type !== 'call_expression')
179
+ return undefined;
180
+ const calleeName = (0, shared_js_1.extractCalleeName)(value);
181
+ if (!calleeName)
182
+ return undefined;
183
+ return { varName: nameNode.text, calleeName };
184
+ };
185
+ const FOR_LOOP_NODE_TYPES = new Set(['for_in_statement']);
186
+ /** TS function/method node types that carry a parameters list. */
187
+ const TS_FUNCTION_NODE_TYPES = new Set([
188
+ 'function_declaration',
189
+ 'function_expression',
190
+ 'arrow_function',
191
+ 'method_definition',
192
+ 'generator_function',
193
+ 'generator_function_declaration',
194
+ ]);
195
+ /**
196
+ * Extract element type from a TypeScript type annotation AST node.
197
+ * Handles:
198
+ * type_annotation ": User[]" → array_type → type_identifier "User"
199
+ * type_annotation ": Array<User>" → generic_type → extractGenericTypeArgs → "User"
200
+ * Falls back to text-based extraction via extractElementTypeFromString.
201
+ */
202
+ const extractTsElementTypeFromAnnotation = (typeAnnotation, pos = 'last', depth = 0) => {
203
+ if (depth > 50)
204
+ return undefined;
205
+ // Unwrap type_annotation (the node text includes ': ' prefix)
206
+ const inner = typeAnnotation.type === 'type_annotation'
207
+ ? (typeAnnotation.firstNamedChild ?? typeAnnotation)
208
+ : typeAnnotation;
209
+ // readonly User[] — readonly_type wraps array_type: unwrap and recurse
210
+ if (inner.type === 'readonly_type') {
211
+ const wrapped = inner.firstNamedChild;
212
+ if (wrapped)
213
+ return extractTsElementTypeFromAnnotation(wrapped, pos, depth + 1);
214
+ }
215
+ // User[] — array_type: first named child is the element type
216
+ if (inner.type === 'array_type') {
217
+ const elem = inner.firstNamedChild;
218
+ if (elem)
219
+ return (0, shared_js_1.extractSimpleTypeName)(elem);
220
+ }
221
+ // Array<User>, Map<string, User> — generic_type
222
+ // pos determines which type arg: 'first' for keys, 'last' for values
223
+ if (inner.type === 'generic_type') {
224
+ const args = (0, shared_js_1.extractGenericTypeArgs)(inner);
225
+ if (args.length >= 1)
226
+ return pos === 'first' ? args[0] : args[args.length - 1];
227
+ }
228
+ // Fallback: strip ': ' prefix from type_annotation text and use string extraction
229
+ const rawText = inner.text;
230
+ return (0, shared_js_1.extractElementTypeFromString)(rawText, pos);
231
+ };
232
+ /**
233
+ * Search a statement_block (function body) for a variable_declarator named `iterableName`
234
+ * that has a type annotation, preceding the given `beforeNode`.
235
+ * Returns the element type from the type annotation, or undefined.
236
+ */
237
+ const findTsLocalDeclElementType = (iterableName, blockNode, beforeNode, pos = 'last') => {
238
+ for (let i = 0; i < blockNode.namedChildCount; i++) {
239
+ const stmt = blockNode.namedChild(i);
240
+ if (!stmt)
241
+ continue;
242
+ // Stop when we reach the for-loop itself
243
+ if (stmt === beforeNode || stmt.startIndex >= beforeNode.startIndex)
244
+ break;
245
+ // Look for lexical_declaration or variable_declaration
246
+ if (stmt.type !== 'lexical_declaration' && stmt.type !== 'variable_declaration')
247
+ continue;
248
+ for (let j = 0; j < stmt.namedChildCount; j++) {
249
+ const decl = stmt.namedChild(j);
250
+ if (decl?.type !== 'variable_declarator')
251
+ continue;
252
+ const nameNode = decl.childForFieldName('name');
253
+ if (nameNode?.text !== iterableName)
254
+ continue;
255
+ const typeAnnotation = decl.childForFieldName('type');
256
+ if (typeAnnotation)
257
+ return extractTsElementTypeFromAnnotation(typeAnnotation, pos);
258
+ }
259
+ }
260
+ return undefined;
261
+ };
262
+ /**
263
+ * Walk up the AST from a for-loop node to find the enclosing function scope,
264
+ * then search (1) its parameter list and (2) local declarations in the body
265
+ * for a variable named `iterableName` with a container type annotation.
266
+ * Returns the element type extracted from the annotation, or undefined.
267
+ */
268
+ const findTsIterableElementType = (iterableName, startNode, pos = 'last') => {
269
+ let current = startNode.parent;
270
+ // Capture the immediate statement_block parent to search local declarations
271
+ const blockNode = current?.type === 'statement_block' ? current : null;
272
+ while (current) {
273
+ if (TS_FUNCTION_NODE_TYPES.has(current.type)) {
274
+ // Search function parameters
275
+ const paramsNode = current.childForFieldName('parameters');
276
+ if (paramsNode) {
277
+ for (let i = 0; i < paramsNode.namedChildCount; i++) {
278
+ const param = paramsNode.namedChild(i);
279
+ if (!param)
280
+ continue;
281
+ const patternNode = param.childForFieldName('pattern') ?? param.childForFieldName('name');
282
+ if (patternNode?.text === iterableName) {
283
+ const typeAnnotation = param.childForFieldName('type');
284
+ if (typeAnnotation)
285
+ return extractTsElementTypeFromAnnotation(typeAnnotation, pos);
286
+ }
287
+ }
288
+ }
289
+ // Search local declarations in the function body (statement_block)
290
+ if (blockNode) {
291
+ const result = findTsLocalDeclElementType(iterableName, blockNode, startNode, pos);
292
+ if (result)
293
+ return result;
294
+ }
295
+ break; // stop at the nearest function boundary
296
+ }
297
+ current = current.parent;
298
+ }
299
+ return undefined;
300
+ };
301
+ /**
302
+ * TypeScript/JavaScript: for (const user of users) where users has a known array type.
303
+ *
304
+ * Both `for...of` and `for...in` use the same `for_in_statement` AST node in tree-sitter.
305
+ * We differentiate by checking for the `of` keyword among the unnamed children.
306
+ *
307
+ * Tier 1c: resolves the element type via three strategies in priority order:
308
+ * 1. declarationTypeNodes — raw type annotation AST node (covers Array<User> from declarations)
309
+ * 2. scopeEnv string — extractElementTypeFromString on the stored type (covers locally annotated vars)
310
+ * 3. AST walk — walks up to the enclosing function's parameters to read User[] annotations directly
311
+ * Only handles `for...of`; `for...in` produces string keys, not element types.
312
+ */
313
+ const extractForLoopBinding = (node, { scopeEnv, declarationTypeNodes, scope, returnTypeLookup }) => {
314
+ if (node.type !== 'for_in_statement')
315
+ return;
316
+ // Confirm this is `for...of`, not `for...in`, by scanning unnamed children for the keyword text.
317
+ let isForOf = false;
318
+ for (let i = 0; i < node.childCount; i++) {
319
+ const child = node.child(i);
320
+ if (child && !child.isNamed && child.text === 'of') {
321
+ isForOf = true;
322
+ break;
323
+ }
324
+ }
325
+ if (!isForOf)
326
+ return;
327
+ // The iterable is the `right` field — may be identifier, member_expression, or call_expression.
328
+ const rightNode = node.childForFieldName('right');
329
+ let iterableName;
330
+ let methodName;
331
+ let callExprElementType;
332
+ if (rightNode?.type === 'identifier') {
333
+ iterableName = rightNode.text;
334
+ }
335
+ else if (rightNode?.type === 'member_expression') {
336
+ const prop = rightNode.childForFieldName('property');
337
+ if (prop)
338
+ iterableName = prop.text;
339
+ }
340
+ else if (rightNode?.type === 'call_expression') {
341
+ // entries.values() → call_expression > function: member_expression > object + property
342
+ // this.repos.values() → nested member_expression: extract property from inner member
343
+ // getUsers() → call_expression > function: identifier (Phase 7.3 — return-type path)
344
+ const fn = rightNode.childForFieldName('function');
345
+ if (fn?.type === 'member_expression') {
346
+ const obj = fn.childForFieldName('object');
347
+ const prop = fn.childForFieldName('property');
348
+ if (obj?.type === 'identifier') {
349
+ iterableName = obj.text;
350
+ }
351
+ else if (obj?.type === 'member_expression') {
352
+ // this.repos.values() → obj = this.repos → extract 'repos'
353
+ const innerProp = obj.childForFieldName('property');
354
+ if (innerProp)
355
+ iterableName = innerProp.text;
356
+ }
357
+ if (prop?.type === 'property_identifier')
358
+ methodName = prop.text;
359
+ }
360
+ else if (fn?.type === 'identifier') {
361
+ // Direct function call: for (const user of getUsers())
362
+ const rawReturn = returnTypeLookup.lookupRawReturnType(fn.text);
363
+ if (rawReturn)
364
+ callExprElementType = (0, shared_js_1.extractElementTypeFromString)(rawReturn);
365
+ }
366
+ }
367
+ if (!iterableName && !callExprElementType)
368
+ return;
369
+ let elementType;
370
+ if (callExprElementType) {
371
+ elementType = callExprElementType;
372
+ }
373
+ else {
374
+ // Look up the container's base type name for descriptor-aware resolution
375
+ const containerTypeName = scopeEnv.get(iterableName);
376
+ const typeArgPos = (0, shared_js_1.methodToTypeArgPosition)(methodName, containerTypeName);
377
+ elementType = (0, shared_js_1.resolveIterableElementType)(iterableName, node, scopeEnv, declarationTypeNodes, scope, extractTsElementTypeFromAnnotation, findTsIterableElementType, typeArgPos);
378
+ }
379
+ if (!elementType)
380
+ return;
381
+ // The loop variable is the `left` field.
382
+ const leftNode = node.childForFieldName('left');
383
+ if (!leftNode)
384
+ return;
385
+ // Handle destructured for-of: for (const [k, v] of entries)
386
+ // AST: left = array_pattern directly (no variable_declarator wrapper)
387
+ // Bind the LAST identifier to the element type (value in [key, value] patterns)
388
+ if (leftNode.type === 'array_pattern') {
389
+ const lastChild = leftNode.lastNamedChild;
390
+ if (lastChild?.type === 'identifier') {
391
+ scopeEnv.set(lastChild.text, elementType);
392
+ }
393
+ return;
394
+ }
395
+ if (leftNode.type === 'object_pattern') {
396
+ // Object destructuring (e.g., `for (const { id } of users)`) destructures
397
+ // into fields of the element type. Without field-level resolution, we cannot
398
+ // bind individual properties to their correct types. Skip to avoid false bindings.
399
+ return;
400
+ }
401
+ let loopVarNode = leftNode;
402
+ // `const user` parses as: left → variable_declarator containing an identifier named `user`
403
+ if (loopVarNode.type === 'variable_declarator') {
404
+ loopVarNode = loopVarNode.childForFieldName('name') ?? loopVarNode.firstNamedChild;
405
+ }
406
+ if (!loopVarNode)
407
+ return;
408
+ const loopVarName = (0, shared_js_1.extractVarName)(loopVarNode);
409
+ if (loopVarName)
410
+ scopeEnv.set(loopVarName, elementType);
411
+ };
412
+ /** Collect fieldAccess items from an object_pattern's destructured properties. */
413
+ const collectDestructuredFields = (nameNode, receiver, scopeEnv) => {
414
+ const items = [];
415
+ for (let j = 0; j < nameNode.namedChildCount; j++) {
416
+ const prop = nameNode.namedChild(j);
417
+ if (!prop)
418
+ continue;
419
+ if (prop.type === 'shorthand_property_identifier_pattern') {
420
+ // `const { name } = obj` → shorthand: varName = fieldName
421
+ const varName = prop.text;
422
+ if (!scopeEnv.has(varName)) {
423
+ items.push({ kind: 'fieldAccess', lhs: varName, receiver, field: varName });
424
+ }
425
+ }
426
+ else if (prop.type === 'pair_pattern') {
427
+ // `const { address: addr } = obj` → pair_pattern: key=field, value=varName
428
+ const keyNode = prop.childForFieldName('key');
429
+ const valNode = prop.childForFieldName('value');
430
+ if (keyNode && valNode) {
431
+ const fieldName = keyNode.text;
432
+ const varName = valNode.text;
433
+ if (!scopeEnv.has(varName)) {
434
+ items.push({ kind: 'fieldAccess', lhs: varName, receiver, field: fieldName });
435
+ }
436
+ }
437
+ }
438
+ }
439
+ return items;
440
+ };
441
+ /** TS/JS: const alias = u → variable_declarator with name/value fields.
442
+ * Also handles destructuring: `const { a, b } = obj` and `const { a } = fn()` → N fieldAccess items. */
443
+ const extractPendingAssignment = (node, scopeEnv) => {
444
+ for (let i = 0; i < node.namedChildCount; i++) {
445
+ const child = node.namedChild(i);
446
+ if (!child || child.type !== 'variable_declarator')
447
+ continue;
448
+ const nameNode = child.childForFieldName('name');
449
+ const valueNode = child.childForFieldName('value');
450
+ if (!nameNode || !valueNode)
451
+ continue;
452
+ // Object destructuring from identifier: `const { address, name } = user`
453
+ if (nameNode.type === 'object_pattern' && valueNode.type === 'identifier') {
454
+ const items = collectDestructuredFields(nameNode, valueNode.text, scopeEnv);
455
+ if (items.length > 0)
456
+ return items;
457
+ continue;
458
+ }
459
+ // Object destructuring from call/await: `const { x } = fn()` or `const { x } = await fn()`
460
+ // Emits a synthetic callResult + N fieldAccess items resolved via fixpoint iteration.
461
+ if (nameNode.type === 'object_pattern') {
462
+ const callNode = (0, shared_js_1.unwrapAwait)(valueNode);
463
+ if (callNode?.type === 'call_expression') {
464
+ const funcNode = callNode.childForFieldName('function');
465
+ if (funcNode) {
466
+ let syntheticVar;
467
+ let leadItem;
468
+ if (funcNode.type === 'identifier') {
469
+ syntheticVar = `__destr_${funcNode.text}_${callNode.startIndex}`;
470
+ leadItem = { kind: 'callResult', lhs: syntheticVar, callee: funcNode.text };
471
+ }
472
+ else if (funcNode.type === 'member_expression') {
473
+ const obj = funcNode.childForFieldName('object');
474
+ const prop = funcNode.childForFieldName('property');
475
+ if (obj &&
476
+ prop?.type === 'property_identifier' &&
477
+ (obj.type === 'identifier' || obj.type === 'this')) {
478
+ syntheticVar = `__destr_${prop.text}_${callNode.startIndex}`;
479
+ leadItem = {
480
+ kind: 'methodCallResult',
481
+ lhs: syntheticVar,
482
+ receiver: obj.text,
483
+ method: prop.text,
484
+ };
485
+ }
486
+ }
487
+ if (syntheticVar && leadItem) {
488
+ const fieldItems = collectDestructuredFields(nameNode, syntheticVar, scopeEnv);
489
+ if (fieldItems.length > 0)
490
+ return [leadItem, ...fieldItems];
491
+ }
492
+ }
493
+ }
494
+ continue;
495
+ }
496
+ const lhs = nameNode.text;
497
+ if (scopeEnv.has(lhs))
498
+ continue;
499
+ if (valueNode.type === 'identifier')
500
+ return { kind: 'copy', lhs, rhs: valueNode.text };
501
+ // member_expression RHS → fieldAccess (a.field, this.field)
502
+ if (valueNode.type === 'member_expression') {
503
+ const obj = valueNode.childForFieldName('object');
504
+ const prop = valueNode.childForFieldName('property');
505
+ if (obj &&
506
+ prop?.type === 'property_identifier' &&
507
+ (obj.type === 'identifier' || obj.type === 'this')) {
508
+ return { kind: 'fieldAccess', lhs, receiver: obj.text, field: prop.text };
509
+ }
510
+ continue;
511
+ }
512
+ // Unwrap await: `const user = await fetchUser()` or `await a.getC()`
513
+ const callNode = (0, shared_js_1.unwrapAwait)(valueNode);
514
+ if (!callNode || callNode.type !== 'call_expression')
515
+ continue;
516
+ const funcNode = callNode.childForFieldName('function');
517
+ if (!funcNode)
518
+ continue;
519
+ // Simple call → callResult: getUser()
520
+ if (funcNode.type === 'identifier') {
521
+ return { kind: 'callResult', lhs, callee: funcNode.text };
522
+ }
523
+ // Method call with receiver → methodCallResult: a.getC()
524
+ if (funcNode.type === 'member_expression') {
525
+ const obj = funcNode.childForFieldName('object');
526
+ const prop = funcNode.childForFieldName('property');
527
+ if (obj &&
528
+ prop?.type === 'property_identifier' &&
529
+ (obj.type === 'identifier' || obj.type === 'this')) {
530
+ return { kind: 'methodCallResult', lhs, receiver: obj.text, method: prop.text };
531
+ }
532
+ }
533
+ }
534
+ return undefined;
535
+ };
536
+ /** Null-check keywords that indicate a null-comparison in binary expressions. */
537
+ const NULL_CHECK_KEYWORDS = new Set(['null', 'undefined']);
538
+ /**
539
+ * Find the if-body (consequence) block for a null-check binary_expression.
540
+ * Walks up from the binary_expression through parenthesized_expression to if_statement,
541
+ * then returns the consequence block (statement_block).
542
+ *
543
+ * AST structure: if_statement > parenthesized_expression > binary_expression
544
+ * if_statement > statement_block (consequence)
545
+ */
546
+ const findIfConsequenceBlock = (binaryExpr) => {
547
+ // Walk up to find the if_statement (typically: binary_expression > parenthesized_expression > if_statement)
548
+ let current = binaryExpr.parent;
549
+ while (current) {
550
+ if (current.type === 'if_statement') {
551
+ // The consequence is the first statement_block child of if_statement
552
+ for (let i = 0; i < current.childCount; i++) {
553
+ const child = current.child(i);
554
+ if (child?.type === 'statement_block')
555
+ return child;
556
+ }
557
+ return undefined;
558
+ }
559
+ // Stop climbing at function/block boundaries — don't cross scope
560
+ if (current.type === 'function_declaration' ||
561
+ current.type === 'function_expression' ||
562
+ current.type === 'arrow_function' ||
563
+ current.type === 'method_definition')
564
+ return undefined;
565
+ current = current.parent;
566
+ }
567
+ return undefined;
568
+ };
569
+ /** TS instanceof narrowing: `x instanceof User` → bind x to User.
570
+ * Also handles null-check narrowing: `x !== null`, `x != undefined` etc.
571
+ * instanceof: first-writer-wins (no prior type binding).
572
+ * null-check: position-indexed narrowing via narrowingRange. */
573
+ const extractPatternBinding = (node, scopeEnv, declarationTypeNodes, scope) => {
574
+ if (node.type !== 'binary_expression')
575
+ return undefined;
576
+ // Check for instanceof first (existing behavior)
577
+ const instanceofOp = node.children.find((c) => !c.isNamed && c.text === 'instanceof');
578
+ if (instanceofOp) {
579
+ const left = node.namedChild(0);
580
+ const right = node.namedChild(1);
581
+ if (left?.type !== 'identifier' || right?.type !== 'identifier')
582
+ return undefined;
583
+ return { varName: left.text, typeName: right.text };
584
+ }
585
+ // Null-check narrowing: x !== null, x != null, x !== undefined, x != undefined
586
+ const op = node.children.find((c) => !c.isNamed && (c.text === '!==' || c.text === '!='));
587
+ if (!op)
588
+ return undefined;
589
+ const left = node.namedChild(0);
590
+ const right = node.namedChild(1);
591
+ if (!left || !right)
592
+ return undefined;
593
+ // Determine which side is the variable and which is null/undefined
594
+ let varNode;
595
+ let isNullCheck = false;
596
+ if (left.type === 'identifier' && NULL_CHECK_KEYWORDS.has(right.text)) {
597
+ varNode = left;
598
+ isNullCheck = true;
599
+ }
600
+ else if (right.type === 'identifier' && NULL_CHECK_KEYWORDS.has(left.text)) {
601
+ varNode = right;
602
+ isNullCheck = true;
603
+ }
604
+ if (!isNullCheck || !varNode)
605
+ return undefined;
606
+ const varName = varNode.text;
607
+ // Look up the variable's resolved type (already stripped of nullable by extractSimpleTypeName)
608
+ const resolvedType = scopeEnv.get(varName);
609
+ if (!resolvedType)
610
+ return undefined;
611
+ // Check if the original declaration type was nullable by looking at the raw AST type node.
612
+ // extractSimpleTypeName already strips nullable markers, so we need the original to know
613
+ // if narrowing is meaningful (i.e., the variable was declared as nullable).
614
+ const declTypeNode = declarationTypeNodes.get(`${scope}\0${varName}`);
615
+ if (!declTypeNode)
616
+ return undefined;
617
+ const declText = declTypeNode.text;
618
+ // Only narrow if the original declaration was nullable
619
+ if (!declText.includes('null') && !declText.includes('undefined'))
620
+ return undefined;
621
+ // Find the if-body block to scope the narrowing
622
+ const ifBody = findIfConsequenceBlock(node);
623
+ if (!ifBody)
624
+ return undefined;
625
+ return {
626
+ varName,
627
+ typeName: resolvedType,
628
+ narrowingRange: { startIndex: ifBody.startIndex, endIndex: ifBody.endIndex },
629
+ };
630
+ };
631
+ /** Infer the type of a literal AST node for TypeScript overload disambiguation. */
632
+ const inferTsLiteralType = (node) => {
633
+ switch (node.type) {
634
+ case 'number':
635
+ return 'number';
636
+ case 'string':
637
+ case 'template_string':
638
+ return 'string';
639
+ case 'true':
640
+ case 'false':
641
+ return 'boolean';
642
+ case 'null':
643
+ return 'null';
644
+ case 'undefined':
645
+ return 'undefined';
646
+ case 'regex':
647
+ return 'RegExp';
648
+ default:
649
+ return undefined;
650
+ }
651
+ };
652
+ /**
653
+ * Ordinary functions own their `this`; arrows do not (#2701).
654
+ *
655
+ * ECMA-262 gives an arrow `[[ThisMode]] = lexical` — it has no `this` binding
656
+ * in its environment record, so the lookup passes through to the enclosing
657
+ * environment. Every other function form binds `this` at call time, so
658
+ * `this.m()` inside one does NOT reach the enclosing class. That is exactly
659
+ * the distinction `tsc` draws by resolving `this` through `getThisContainer`
660
+ * with `includeArrowFunctions = false`.
661
+ *
662
+ * `method_definition` is deliberately absent: it is the construct that binds
663
+ * `this` TO the enclosing class, so the walk must pass through it and stop at
664
+ * the class. (Unlike the scope-layer marker in `typescript/query.ts`, which
665
+ * can list it because a method's own `this` typeBinding is consulted first.)
666
+ *
667
+ * Kept in sync with `@receiver-owner.this` in `languages/typescript/query.ts`
668
+ * and `languages/javascript/query.ts` — the two layers must agree or a call
669
+ * suppressed by one is re-introduced by the other.
670
+ */
671
+ exports.THIS_BOUNDARY_NODE_TYPES = new Set([
672
+ 'function_declaration',
673
+ 'function_expression',
674
+ 'generator_function',
675
+ 'generator_function_declaration',
676
+ ]);
677
+ exports.typeConfig = {
678
+ declarationNodeTypes: DECLARATION_NODE_TYPES,
679
+ forLoopNodeTypes: FOR_LOOP_NODE_TYPES,
680
+ thisBoundaryNodeTypes: exports.THIS_BOUNDARY_NODE_TYPES,
681
+ patternBindingNodeTypes: new Set(['binary_expression']),
682
+ extractDeclaration,
683
+ extractParameter,
684
+ extractInitializer,
685
+ scanConstructorBinding,
686
+ extractForLoopBinding,
687
+ extractPendingAssignment,
688
+ extractPatternBinding,
689
+ inferLiteralType: inferTsLiteralType,
690
+ };