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,51 @@
1
+ "use strict";
2
+ /**
3
+ * Swift shadowing precedence for the `mergeBindings` hook.
4
+ *
5
+ * Tier ranking (lower wins in shadowing):
6
+ *
7
+ * - 0: `local` — a type member, method, local var, or parameter
8
+ * declared in this scope.
9
+ * - 1: `import` / `namespace` / `reexport` — names brought in by an
10
+ * `import ModuleName` (whole-module, including `@testable`).
11
+ * - 2: `wildcard` — reserved; Swift's whole-module import already
12
+ * behaves like a namespace tier, so this is rarely populated.
13
+ *
14
+ * Swift resolves an ambiguity between two imported modules by requiring
15
+ * an explicit `Module.Symbol` qualifier; for receiver-typed dispatch we
16
+ * treat all imports as one tier. Locals always shadow imports.
17
+ *
18
+ * Within a surviving tier we de-dup by `DefId`, last-write-wins.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.swiftMergeBindings = swiftMergeBindings;
22
+ const TIER_LOCAL = 0;
23
+ const TIER_IMPORT = 1;
24
+ const TIER_WILDCARD = 2;
25
+ const TIER_UNKNOWN = 3;
26
+ function tierOf(b) {
27
+ switch (b.origin) {
28
+ case 'local':
29
+ return TIER_LOCAL;
30
+ case 'reexport':
31
+ case 'import':
32
+ case 'namespace':
33
+ return TIER_IMPORT;
34
+ case 'wildcard':
35
+ return TIER_WILDCARD;
36
+ default:
37
+ return TIER_UNKNOWN;
38
+ }
39
+ }
40
+ function swiftMergeBindings(bindings) {
41
+ if (bindings.length === 0)
42
+ return bindings;
43
+ let bestTier = Number.POSITIVE_INFINITY;
44
+ for (const b of bindings)
45
+ bestTier = Math.min(bestTier, tierOf(b));
46
+ const survivors = bindings.filter((b) => tierOf(b) === bestTier);
47
+ const seen = new Map();
48
+ for (const b of survivors)
49
+ seen.set(b.def.nodeId, b);
50
+ return [...seen.values()];
51
+ }
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /**
3
+ * Tree-sitter query for Swift scope captures (RFC §5.1).
4
+ *
5
+ * Captures the structural skeleton the generic scope-resolution
6
+ * pipeline consumes: scopes (module/class/function), declarations
7
+ * (class-likes, methods, init, properties), imports, type bindings
8
+ * (parameter annotations, property/field annotations, constructor
9
+ * inference, receiver self), and references (call sites, member calls).
10
+ *
11
+ * Swift specifics that shape this query (all verified against
12
+ * tree-sitter-swift 0.7.1 live s-expressions):
13
+ *
14
+ * - `class`, `struct`, AND `extension` all parse to a single node
15
+ * type `class_declaration`. They are distinguished by the `name:`
16
+ * field node type: class/struct name is a bare `(type_identifier)`,
17
+ * while an extension's name field wraps the extended type in a
18
+ * `(user_type (type_identifier))`. The capture below grabs all
19
+ * three under `@scope.class` + `@declaration.class`; the captures
20
+ * orchestrator (`captures.ts`) re-tags extensions via the
21
+ * user_type discriminator so extension members hoist onto the
22
+ * extended type.
23
+ * - `protocol_declaration` is its own node; its bodyless method
24
+ * requirements are `protocol_function_declaration` (NOT
25
+ * `function_declaration`).
26
+ * - `init_declaration` has no `name:` field — identity is the `init`
27
+ * keyword. The captures layer synthesizes its `@declaration.name`.
28
+ * - Inside a `parameter`, BOTH the label and the type use the field
29
+ * name `name:` — disambiguate by child node type (simple_identifier
30
+ * = label, user_type = type). Parameter type bindings are therefore
31
+ * synthesized in `captures.ts`, not matched here.
32
+ * - A labeled call argument wraps its label in a dedicated
33
+ * `value_argument_label` node.
34
+ * - `self` is its own node `self_expression`; a `self.member()` call
35
+ * is `call_expression > navigation_expression(target: self_expression,
36
+ * suffix: navigation_suffix > simple_identifier)`.
37
+ * - `import_declaration` carries the module path as an `(identifier
38
+ * (simple_identifier)+)` — one `simple_identifier` per dotted
39
+ * segment. `@testable` and other attributes surface as a leading
40
+ * `(modifiers (attribute (user_type (type_identifier))))`.
41
+ *
42
+ * Exposes lazy `Parser` and `Query` singletons so callers don't pay
43
+ * tree-sitter init cost per file.
44
+ */
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.getSwiftParser = getSwiftParser;
50
+ exports.getSwiftScopeQuery = getSwiftScopeQuery;
51
+ const tree_sitter_1 = __importDefault(require("tree-sitter"));
52
+ const index_js_1 = require("../../../../../shared/index.js");
53
+ // `tree-sitter-swift` is an optional/vendored grammar that may be absent on a
54
+ // default install. It is loaded lazily + guarded via parser-loader rather than
55
+ // statically imported: this module is pulled onto the main thread eagerly by
56
+ // the scope-resolution registry and the language-provider index, so a top-level
57
+ // `import Swift from 'tree-sitter-swift'` would throw ERR_MODULE_NOT_FOUND at
58
+ // module-load and crash `analyze` even for repos with no Swift files (#2091,
59
+ // #2093). The grammar is only ever needed inside the lazy getters below.
60
+ const parser_loader_js_1 = require("../../../tree-sitter/parser-loader.js");
61
+ const SWIFT_SCOPE_QUERY = `
62
+ ;; ── Scopes ──────────────────────────────────────────────────────────
63
+ (source_file) @scope.module
64
+
65
+ ;; class / struct / extension all parse to class_declaration; the
66
+ ;; captures orchestrator splits extensions out via the user_type
67
+ ;; name discriminator.
68
+ (class_declaration) @scope.class
69
+ (protocol_declaration) @scope.class
70
+
71
+ (function_declaration) @scope.function
72
+ (protocol_function_declaration) @scope.function
73
+ (init_declaration) @scope.function
74
+ (deinit_declaration) @scope.function
75
+
76
+ ;; ── Declarations — types ────────────────────────────────────────────
77
+ ;; class / struct: name is a bare type_identifier.
78
+ (class_declaration
79
+ name: (type_identifier) @declaration.name) @declaration.class
80
+
81
+ ;; extension: name is (user_type (type_identifier)). Captured separately
82
+ ;; so captures.ts can re-tag it as an extension of the wrapped type.
83
+ (class_declaration
84
+ name: (user_type) @declaration.name) @declaration.extension
85
+
86
+ (protocol_declaration
87
+ name: (type_identifier) @declaration.name) @declaration.interface
88
+
89
+ ;; ── Declarations — methods / init / properties ──────────────────────
90
+ (function_declaration
91
+ name: (simple_identifier) @declaration.name) @declaration.method
92
+
93
+ (protocol_function_declaration
94
+ name: (simple_identifier) @declaration.name) @declaration.method
95
+
96
+ ;; init has no name field — captures.ts synthesizes @declaration.name = "init".
97
+ (init_declaration) @declaration.constructor
98
+
99
+ (property_declaration
100
+ name: (pattern
101
+ bound_identifier: (simple_identifier) @declaration.name)) @declaration.property
102
+
103
+ ;; ── Imports ─────────────────────────────────────────────────────────
104
+ ;; Single anchor per import; the captures layer decomposes the module
105
+ ;; path (and detects @testable) into @import.kind/source/name markers.
106
+ (import_declaration) @import.statement
107
+
108
+ ;; ── Type bindings — property annotations: \`var owner: Owner\` ─────────
109
+ (property_declaration
110
+ name: (pattern
111
+ bound_identifier: (simple_identifier) @type-binding.name)
112
+ (type_annotation
113
+ (user_type (type_identifier) @type-binding.type))) @type-binding.annotation
114
+
115
+ ;; Optional property annotations: \`var owner: Owner?\` (#2807). The pattern
116
+ ;; above requires the \`user_type\` to be a DIRECT child of the annotation;
117
+ ;; an optional inserts an \`optional_type\` level between them, so an optional
118
+ ;; field was never typed at all and \`self.owner!.method()\` could not resolve
119
+ ;; its receiver. Declaring a field optional and assigning it later is the
120
+ ;; idiomatic Swift way to express a field that has no value at init time, so
121
+ ;; this is the common shape, not an edge case.
122
+ ;;
123
+ ;; The INNER \`type_identifier\` is captured, so the binding is \`Owner\` with no
124
+ ;; reliance on \`stripOptional\` reducing a \`Owner?\` spelling.
125
+ (property_declaration
126
+ name: (pattern
127
+ bound_identifier: (simple_identifier) @type-binding.name)
128
+ (type_annotation
129
+ (optional_type
130
+ (user_type (type_identifier) @type-binding.type)))) @type-binding.annotation
131
+
132
+ ;; ── Type bindings — stored / local-var constructor inference:
133
+ ;; \`let p = Product(...)\` (constructor) and \`let u = getUser()\`
134
+ ;; (free-call result; chain-follow resolves getUser → its return type).
135
+ ;; property_declaration is the node for both class-level stored
136
+ ;; properties AND let/var inside a function body. ───────────────────
137
+ (property_declaration
138
+ name: (pattern
139
+ bound_identifier: (simple_identifier) @type-binding.name)
140
+ value: (call_expression
141
+ (simple_identifier) @type-binding.type)) @type-binding.constructor
142
+
143
+ ;; \`let u = await fetchUser()\` — unwrap the await wrapper to the call.
144
+ (property_declaration
145
+ name: (pattern
146
+ bound_identifier: (simple_identifier) @type-binding.name)
147
+ value: (await_expression
148
+ (call_expression
149
+ (simple_identifier) @type-binding.type))) @type-binding.constructor
150
+
151
+ ;; \`let r = try parseRepo()\` — unwrap the try wrapper to the call.
152
+ (property_declaration
153
+ name: (pattern
154
+ bound_identifier: (simple_identifier) @type-binding.name)
155
+ value: (try_expression
156
+ (call_expression
157
+ (simple_identifier) @type-binding.type))) @type-binding.constructor
158
+
159
+ ;; ── Optional binding anchors: if-let / guard-let. In tree-sitter-swift
160
+ ;; 0.7.1 these are if_statement / guard_statement with a flat shape — a
161
+ ;; \`bound_identifier:\` field for the name plus separate \`condition:\`
162
+ ;; children (one of which is the bound value expression). A static .scm
163
+ ;; pattern can't pair the name with the value across those sibling
164
+ ;; condition fields, so we only ANCHOR the statement here and synthesize
165
+ ;; the @type-binding.constructor in captures.ts (synthesizeOptionalBinding)
166
+ ;; by walking the node. (A nonexistent if_let_binding node type would throw
167
+ ;; TSQueryErrorNodeType and break the WHOLE query — do not reintroduce it.)
168
+ (if_statement
169
+ bound_identifier: (simple_identifier)) @optional.binding
170
+ (guard_statement
171
+ bound_identifier: (simple_identifier)) @optional.binding
172
+
173
+ ;; NOTE: parameter-type bindings (\`func f(u: User)\`) and function
174
+ ;; return-type bindings (\`func getUser() -> User\`) are NOT matched by
175
+ ;; tree-sitter patterns here. Swift's grammar reuses the SAME \`name:\`
176
+ ;; field for the function name, each parameter's label, AND the return
177
+ ;; type, so a two-\`name:\`-field query cross-assigns and produces garbage
178
+ ;; bindings (\`save: save\`). They are synthesized in code instead —
179
+ ;; \`captures.ts\` reads the function node via
180
+ ;; \`swiftMethodConfig.extractParameters\` / \`extractReturnType\`, which
181
+ ;; handle the grammar correctly. (Mirrors how receiver + arity are
182
+ ;; synthesized rather than queried.)
183
+
184
+ ;; ── References — field reads: \`u.address\` (member access that is NOT a
185
+ ;; call callee or assignment LHS). Emit-side filtering in captures.ts
186
+ ;; drops call targets and write LHS so only genuine reads emit ACCESSES.
187
+ (navigation_expression
188
+ target: (_) @reference.receiver
189
+ suffix: (navigation_suffix
190
+ suffix: (simple_identifier) @reference.name)) @reference.read.member
191
+
192
+ ;; ── References — free calls: \`foo(...)\` ─────────────────────────────
193
+ (call_expression
194
+ (simple_identifier) @reference.name) @reference.call.free
195
+
196
+ ;; ── References — member / method calls: \`obj.method(...)\` ───────────
197
+ ;; navigation_expression carries the receiver (target:) and the member
198
+ ;; (suffix > navigation_suffix > simple_identifier). \`self\` is a
199
+ ;; self_expression; other receivers are simple_identifier / nested
200
+ ;; navigation_expression — capture the whole target as @reference.receiver.
201
+ (call_expression
202
+ (navigation_expression
203
+ target: (_) @reference.receiver
204
+ suffix: (navigation_suffix
205
+ suffix: (simple_identifier) @reference.name))) @reference.call.member
206
+
207
+ ;; ── References — constructor calls handled via @reference.call.free
208
+ ;; (a Swift \`Foo(...)\` is a call_expression with a simple_identifier
209
+ ;; callee; pickConstructorOrClass in free-call fallback targets the
210
+ ;; type's Constructor). No separate object_creation node in Swift.
211
+ `;
212
+ let _parser = null;
213
+ let _query = null;
214
+ function getSwiftParser() {
215
+ if (_parser === null) {
216
+ _parser = new tree_sitter_1.default();
217
+ _parser.setLanguage((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Swift));
218
+ }
219
+ return _parser;
220
+ }
221
+ function getSwiftScopeQuery() {
222
+ if (_query === null) {
223
+ _query = new tree_sitter_1.default.Query((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Swift), SWIFT_SCOPE_QUERY);
224
+ }
225
+ return _query;
226
+ }
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Synthesize `@type-binding.self` captures for Swift instance methods —
4
+ * one for `self` (always on non-static methods inside a type body) and
5
+ * optionally one for `super` (only on class methods when the enclosing
6
+ * class declares a superclass).
7
+ *
8
+ * Mirrors `languages/csharp/receiver-binding.ts`. tree-sitter can't
9
+ * express "the implicit receiver of a non-static member of a
10
+ * class/struct/extension/protocol" via a static `.scm` pattern because
11
+ * the receiver isn't a parameter — it's implicit. Synthesis in code is
12
+ * the same approach C#/Python use for `this`/`self`.
13
+ *
14
+ * Swift AST facts (tree-sitter-swift 0.7.1, verified):
15
+ * - class / struct / extension all parse to `class_declaration`. For
16
+ * class/struct the `name:` field is `(type_identifier)`; for an
17
+ * extension it is `(user_type (type_identifier))` wrapping the
18
+ * EXTENDED type — so `self` in an extension binds to the extended
19
+ * type, which is exactly what we want for method dispatch.
20
+ * - `protocol_declaration` has a `(type_identifier)` name.
21
+ * - the method body is the `body:` field (`function_body`); a bodyless
22
+ * `protocol_function_declaration` has no function scope to anchor to.
23
+ * - a superclass / conformance is an `(inheritance_specifier
24
+ * inherits_from: (user_type (type_identifier)))` child of the
25
+ * class_declaration.
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.findEnclosingTypeDeclaration = findEnclosingTypeDeclaration;
29
+ exports.synthesizeSwiftReceiverBinding = synthesizeSwiftReceiverBinding;
30
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
31
+ const base_type_js_1 = require("./base-type.js");
32
+ const swift_js_1 = require("../../method-extractors/configs/swift.js");
33
+ const TYPE_DECL_NODE_TYPES = new Set(['class_declaration', 'protocol_declaration']);
34
+ const FUNCTION_NODE_TYPES = new Set([
35
+ 'function_declaration',
36
+ 'init_declaration',
37
+ 'deinit_declaration',
38
+ ]);
39
+ /** Walk up to the enclosing type declaration (class/struct/extension/
40
+ * protocol). Nested local functions still see `self` from the enclosing
41
+ * type, so don't stop at function-like nodes.
42
+ *
43
+ * Exported so `swiftEnclosingTypeName` (captures.ts) asks the same question
44
+ * the same way — the two must agree on what "the enclosing type" is or a
45
+ * method's owner qualifier and its `self` binding name different types. */
46
+ function findEnclosingTypeDeclaration(node) {
47
+ let cur = node.parent;
48
+ while (cur !== null) {
49
+ if (TYPE_DECL_NODE_TYPES.has(cur.type))
50
+ return cur;
51
+ cur = cur.parent;
52
+ }
53
+ return null;
54
+ }
55
+ /** Bare type name of the enclosing type. class/struct → type_identifier
56
+ * text; extension → the wrapped user_type's identifier text; protocol →
57
+ * type_identifier text. */
58
+ function enclosingTypeName(typeNode) {
59
+ const nameNode = typeNode.childForFieldName('name');
60
+ if (nameNode === null)
61
+ return null;
62
+ if (nameNode.type === 'user_type') {
63
+ // extension Foo { } → name is (user_type (type_identifier)).
64
+ // extension Foo.Bar { } → (user_type (type_identifier Foo)
65
+ // (type_identifier Bar)); the extended type — and therefore `self` —
66
+ // is the TRAILING identifier `Bar` (lastNamedChild), not `Foo`. For a
67
+ // single identifier first === last, so this is unchanged.
68
+ const inner = nameNode.lastNamedChild;
69
+ return inner?.text ?? nameNode.text;
70
+ }
71
+ return nameNode.text;
72
+ }
73
+ /** Is this declaration a `class` (vs `struct`/`extension`)? Only classes
74
+ * have a meaningful `super`. Detected by the leading keyword token —
75
+ * class/struct/extension share the `class_declaration` node type. */
76
+ function isClassKeyword(typeNode) {
77
+ for (let i = 0; i < typeNode.childCount; i++) {
78
+ const child = typeNode.child(i);
79
+ if (child !== null && !child.isNamed) {
80
+ const t = child.text.trim();
81
+ if (t === 'class')
82
+ return true;
83
+ if (t === 'struct' || t === 'extension' || t === 'enum' || t === 'actor')
84
+ return false;
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ /** First inherited type (superclass or first protocol) as raw text, or
90
+ * null. For a class the first `inheritance_specifier` is conventionally
91
+ * the superclass — `super.x()` only compiles when that is true. For a
92
+ * `user_type` base the name is its trailing `type_identifier` segment (see
93
+ * `swiftQualifiedBaseTail`), falling back to the raw node text when there is
94
+ * no `type_identifier` child. */
95
+ function firstInheritedType(typeNode) {
96
+ for (let i = 0; i < typeNode.namedChildCount; i++) {
97
+ const child = typeNode.namedChild(i);
98
+ if (child === null || child.type !== 'inheritance_specifier')
99
+ continue;
100
+ const inheritsFrom = child.childForFieldName('inherits_from') ?? child.firstNamedChild;
101
+ if (inheritsFrom === null)
102
+ return null;
103
+ if (inheritsFrom.type === 'user_type') {
104
+ return (0, base_type_js_1.swiftQualifiedBaseTail)(inheritsFrom)?.text ?? inheritsFrom.text;
105
+ }
106
+ return inheritsFrom.text;
107
+ }
108
+ return null;
109
+ }
110
+ /** A Swift type method (`static func` OR `class func`) has no `self`
111
+ * instance receiver. Delegate to `swiftMethodConfig.isStatic`, which is
112
+ * the single source of truth: `static func` emits the modifier under a
113
+ * `modifiers > property_modifier` wrapper, but `class func` emits a BARE
114
+ * anonymous `class` token directly under `function_declaration` (verified,
115
+ * tree-sitter-swift 0.7.1). `swiftMethodConfig.isStatic` covers both via
116
+ * `hasKeyword(node, 'static'|'class')` (scans direct children) and
117
+ * `hasModifier(...)` — so reusing it avoids re-deriving the same scan and
118
+ * fixes the prior `modifiers`-only check that missed `class func`. */
119
+ function isStaticMethod(fnNode) {
120
+ return swift_js_1.swiftMethodConfig.isStatic(fnNode);
121
+ }
122
+ /**
123
+ * Build zero, one, or two `@type-binding.self` matches for `fnNode`:
124
+ * - `null`/`[]` if the function is free (no enclosing type), static, or
125
+ * the enclosing type has no resolvable name, or the function is
126
+ * bodyless (no scope to anchor to).
127
+ * - one match (`self`) for instance methods of a class/struct/extension/
128
+ * protocol.
129
+ * - two matches (`self` + `super`) only when the function lives in a
130
+ * `class` (keyword) declaration with a declared superclass.
131
+ *
132
+ * Caller must guarantee `FUNCTION_NODE_TYPES.has(fnNode.type)`.
133
+ */
134
+ function synthesizeSwiftReceiverBinding(fnNode) {
135
+ if (!FUNCTION_NODE_TYPES.has(fnNode.type))
136
+ return [];
137
+ if (isStaticMethod(fnNode))
138
+ return [];
139
+ const enclosingType = findEnclosingTypeDeclaration(fnNode);
140
+ if (enclosingType === null)
141
+ return [];
142
+ const enclosingName = enclosingTypeName(enclosingType);
143
+ if (enclosingName === null)
144
+ return [];
145
+ // Anchor inside the function scope. `body:` is the function_body; its
146
+ // range is guaranteed inside the function scope (unlike the method's
147
+ // start position, which maps to the enclosing type scope via
148
+ // positionIndex). Bodyless declarations have no function scope.
149
+ const anchorNode = fnNode.childForFieldName('body');
150
+ if (anchorNode === null)
151
+ return [];
152
+ const out = [buildReceiverMatch(anchorNode, 'self', enclosingName)];
153
+ // `super` only for class methods with a declared superclass.
154
+ if (isClassKeyword(enclosingType)) {
155
+ const superType = firstInheritedType(enclosingType);
156
+ if (superType !== null) {
157
+ out.push(buildReceiverMatch(anchorNode, 'super', superType));
158
+ }
159
+ }
160
+ return out;
161
+ }
162
+ function buildReceiverMatch(anchorNode, name, typeText) {
163
+ const m = {
164
+ '@type-binding.self': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.self', anchorNode),
165
+ '@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', anchorNode, name),
166
+ '@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', anchorNode, typeText),
167
+ };
168
+ return m;
169
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * Swift `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
4
+ * the generic `runScopeResolution` orchestrator (RFC #909 Ring 3,
5
+ * issue #937 — the final per-language migration).
6
+ *
7
+ * Closest reference: C# (`csharpScopeResolver`) — both are OOP with
8
+ * classes, structs, interfaces/protocols, and explicit instance
9
+ * receivers. MRO follows Kotlin's shape (single superclass + multiple
10
+ * protocol conformance).
11
+ *
12
+ * ## Swift specifics
13
+ *
14
+ * - **Extensions** add members to an existing type. `emitSwiftScopeCaptures`
15
+ * re-keys an `extension Foo { … }` to a `class_declaration`-style def
16
+ * named `Foo`, so its members land on `Foo`'s scope and the shared
17
+ * `populateClassOwnedMembers` stamps them with `Foo`'s ownerId — the
18
+ * same mechanism C# uses for `partial class`. No separate hoist pass.
19
+ * - **Labeled arguments** narrow by ARITY only (count-primary, labels
20
+ * soft) — see `arity.ts`. Label-precise dispatch is deferred to the
21
+ * type-binding layer.
22
+ * - **Same-module visibility**: every file in an SPM target sees its
23
+ * siblings' top-level defs without an `import`. Modeled via
24
+ * `populateSwiftTargetSiblings`, grouped by the SPM target *subtree*
25
+ * (`Sources/<Target>/…`) via `groupSwiftFilesBySpmTarget` fed from the
26
+ * `loadResolutionConfig` SPM map, mirroring Go's package siblings. With
27
+ * no scanned source dir (no `Sources/`/`Package/Sources/`/`src/`) the
28
+ * map is null and all files form one `__default__` module.
29
+ * - **`super`** is the superclass receiver (`super.method()`); plain
30
+ * `self` is the instance receiver. Both synthesized in
31
+ * `receiver-binding.ts`.
32
+ *
33
+ * ## Known limitations (conscious migration trade-offs; parity gate flags
34
+ * anything that matters in the corpus)
35
+ *
36
+ * 1. **Protocol associated types / generic constraints** (`extension
37
+ * Array where Element: Equatable`) are not narrowed — the `Self`
38
+ * type of a protocol method resolves to the protocol, not the
39
+ * conforming type.
40
+ * 2. **Cross-module `import` resolution** is still directory-segment
41
+ * based (`import Foo` → files under a `Foo/` dir); explicit imports do
42
+ * not yet consult the SPM target map (follow-up, tracked under #1935).
43
+ * Same-target visibility (the common case) IS SPM-target-subtree
44
+ * accurate — handled by sibling augmentation grouped via
45
+ * `groupSwiftFilesBySpmTarget`, not by explicit imports.
46
+ * 3. **Operator / subscript overloads** dispatch by name only.
47
+ * 4. **`@_exported import` re-exports** are treated as plain imports.
48
+ */
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.swiftScopeResolver = void 0;
51
+ const index_js_1 = require("../../../../../shared/index.js");
52
+ const language_config_js_1 = require("../../language-config.js");
53
+ const mro_js_1 = require("../../scope-resolution/passes/mro.js");
54
+ const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
55
+ const ids_js_1 = require("../../scope-resolution/graph-bridge/ids.js");
56
+ const swift_js_1 = require("../swift.js");
57
+ const index_js_2 = require("./index.js");
58
+ const ZERO_RANGE = { startLine: 0, startCol: 0, endLine: 0, endCol: 0 };
59
+ const swiftScopeResolver = {
60
+ language: index_js_1.SupportedLanguages.Swift,
61
+ languageProvider: swift_js_1.swiftProvider,
62
+ importEdgeReason: 'swift-scope: import',
63
+ // Load the SPM target map (Sources/<Target>/ subtree mapping) once per
64
+ // workspace pass. Threaded through the orchestrator as `resolutionConfig`
65
+ // and consumed by the three same-module grouping hooks
66
+ // (`emitImplicitImportEdges`, `populateNamespaceSiblings`,
67
+ // `mirrorNamespaceTypeBindings`) via `coerceSwiftTargets` so they group by
68
+ // the SPM target subtree, not the immediate directory. Mirrors
69
+ // `goScopeResolver`'s `loadGoModulePath`.
70
+ loadResolutionConfig: (repoPath) => (0, language_config_js_1.loadSwiftPackageConfig)(repoPath),
71
+ resolveImportTarget: (targetRaw, fromFile, allFilePaths) => {
72
+ const ws = { fromFile, allFilePaths };
73
+ return (0, index_js_2.resolveSwiftImportTarget)((0, index_js_2.interpretSwiftImport)({
74
+ '@import.source': { name: '@import.source', text: targetRaw, range: ZERO_RANGE },
75
+ }) ?? { kind: 'namespace', localName: targetRaw, importedName: targetRaw, targetRaw }, ws);
76
+ },
77
+ // Swift shadowing: local declarations hide imports.
78
+ mergeBindings: (existing, incoming) => [...(0, index_js_2.swiftMergeBindings)([...existing, ...incoming])],
79
+ // Adapter: swiftArityCompatibility uses (def, callsite); contract is (callsite, def).
80
+ arityCompatibility: (callsite, def) => (0, index_js_2.swiftArityCompatibility)(def, callsite),
81
+ buildMro: (graph, parsedFiles, nodeLookup) => buildSwiftMro(graph, parsedFiles, nodeLookup),
82
+ // Methods/properties/init are owned by their enclosing class/struct/
83
+ // extension(→extended type)/protocol. Extension members hoist for free
84
+ // because captures.ts re-keys the extension to a Class def named after
85
+ // the extended type.
86
+ populateOwners: (parsed) => (0, walkers_js_1.populateClassOwnedMembers)(parsed),
87
+ // `super.method()` dispatches through the superclass chain.
88
+ isSuperReceiver: (text) => text.trim() === 'super',
89
+ // Whole-module same-target visibility without `import`.
90
+ populateNamespaceSiblings: index_js_2.populateSwiftTargetSiblings,
91
+ // Same-target File→File IMPORTS edges (no syntactic `import`). The
92
+ // generic finalized-ImportEdge pipeline has nothing to emit here, so
93
+ // these whole-module-visibility edges are emitted directly.
94
+ emitImplicitImportEdges: index_js_2.emitSwiftImplicitImportEdges,
95
+ // Mirror sibling files' return-type typeBindings into each file's
96
+ // module scope so cross-file chains (`let u = siblingFn(); u.m()`)
97
+ // resolve. Whole-module visibility has no import edge for
98
+ // `propagateImportedReturnTypes` to follow, so this directory-sibling
99
+ // mirror feeds it (mirrors Go's namespace-typeBinding mirror).
100
+ mirrorNamespaceTypeBindings: index_js_2.mirrorSwiftSiblingTypeBindings,
101
+ // Swift is statically typed — type info is reliable; the field-fallback
102
+ // heuristic over-connects, so keep it off. Return-type propagation on.
103
+ fieldFallbackOnMethodLookup: false,
104
+ propagatesReturnTypesAcrossImports: true,
105
+ // Swift has no `new` keyword: `UserService()` is a bare call that
106
+ // resolves to the type's Constructor/Class. With whole-module sibling
107
+ // visibility, the callee is reachable workspace-wide, so allow the
108
+ // global free-call fallback (as Python/Go/Ruby/COBOL do for the same
109
+ // no-`new` constructor + cross-file free-call shape).
110
+ allowGlobalFreeCallFallback: true,
111
+ // Swift's call graph models `Type(...)` as a reference to the type
112
+ // itself, not its `init` — both the legacy DAG and this test suite link
113
+ // `Foo()` to the Class node even when an explicit `init` exists.
114
+ constructorCallTargetsClass: true,
115
+ };
116
+ exports.swiftScopeResolver = swiftScopeResolver;
117
+ /**
118
+ * Swift MRO — `defaultLinearize` (EXTENDS-only superclass chain) extended
119
+ * with protocol ancestors discovered via `IMPLEMENTS` edges. Protocols
120
+ * with default method implementations (via protocol extensions) are
121
+ * inherited by conforming types without an explicit `override`; the
122
+ * generic EXTENDS-only MRO would miss them because the conformer has no
123
+ * EXTENDS link to the protocol.
124
+ *
125
+ * Mirrors `buildKotlinMro`: append protocols after the superclass chain
126
+ * (Swift requires an explicit implementation on ambiguity, so first-seen
127
+ * ordering approximates method lookup). Transitive protocol inheritance
128
+ * (`protocol A: B`) is closed via BFS.
129
+ */
130
+ function buildSwiftMro(graph, parsedFiles, nodeLookup) {
131
+ const mro = (0, mro_js_1.buildMro)(graph, parsedFiles, nodeLookup, mro_js_1.defaultLinearize);
132
+ const defIdByGraphId = new Map();
133
+ for (const parsed of parsedFiles) {
134
+ for (const def of parsed.localDefs) {
135
+ if (!(0, walkers_js_1.isClassLike)(def.type))
136
+ continue;
137
+ const graphId = (0, ids_js_1.resolveDefGraphId)(parsed.filePath, def, nodeLookup);
138
+ if (graphId !== undefined)
139
+ defIdByGraphId.set(graphId, def.nodeId);
140
+ }
141
+ }
142
+ const directImpls = new Map();
143
+ for (const rel of graph.iterRelationshipsByType('IMPLEMENTS')) {
144
+ const source = defIdByGraphId.get(rel.sourceId);
145
+ const target = defIdByGraphId.get(rel.targetId);
146
+ if (source === undefined || target === undefined)
147
+ continue;
148
+ let list = directImpls.get(source);
149
+ if (list === undefined) {
150
+ list = [];
151
+ directImpls.set(source, list);
152
+ }
153
+ if (!list.includes(target))
154
+ list.push(target);
155
+ }
156
+ for (const [classDefId, extendsMro] of mro) {
157
+ const ancestorChain = [classDefId, ...extendsMro];
158
+ const seeds = [];
159
+ for (const ancestorId of ancestorChain) {
160
+ for (const ifaceId of directImpls.get(ancestorId) ?? [])
161
+ seeds.push(ifaceId);
162
+ }
163
+ if (seeds.length === 0)
164
+ continue;
165
+ const protocols = closeProtocols(seeds, directImpls);
166
+ mro.set(classDefId, [...extendsMro, ...protocols.filter((i) => !extendsMro.includes(i))]);
167
+ }
168
+ // Types that only conform to protocols (no superclass) still need an MRO.
169
+ for (const [classDefId, ifaces] of directImpls) {
170
+ if (mro.has(classDefId))
171
+ continue;
172
+ mro.set(classDefId, closeProtocols([...ifaces], directImpls));
173
+ }
174
+ return mro;
175
+ }
176
+ function closeProtocols(seeds, directImpls) {
177
+ const out = [];
178
+ const seen = new Set();
179
+ const queue = [...seeds];
180
+ while (queue.length > 0) {
181
+ const cur = queue.shift();
182
+ if (seen.has(cur))
183
+ continue;
184
+ seen.add(cur);
185
+ out.push(cur);
186
+ for (const next of directImpls.get(cur) ?? []) {
187
+ if (!seen.has(next))
188
+ queue.push(next);
189
+ }
190
+ }
191
+ return out;
192
+ }