cgraphx 2.0.2 → 2.0.6

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 (754) hide show
  1. package/dist/.claude-template/FLOW-MAP.md +13 -3
  2. package/dist/.claude-template/agents/task-history.md +186 -0
  3. package/dist/.claude-template/commands/end.md +1 -0
  4. package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +5 -3
  5. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +8 -8
  6. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +8 -8
  7. package/dist/.claude-template/skills/clarify-requirements/SKILL.md +13 -9
  8. package/dist/.claude-template/skills/db-query/SKILL.md +19 -2
  9. package/dist/.claude-template/skills/iboc-check/SKILL.md +51 -23
  10. package/dist/.claude-template/skills/iboc-check/filler-prompt.md +3 -4
  11. package/dist/.claude-template/skills/run-api-test/SKILL.md +15 -15
  12. package/dist/.claude-template/skills/run-api-test/assets/{template-test-report.md → template-/346/216/245/345/217/243/346/265/213/350/257/225/346/212/245/345/221/212.md} +4 -4
  13. package/dist/.claude-template/skills/run-api-test/references/bru-run.md +1 -1
  14. package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
  15. package/dist/.claude-template/skills/run-api-test/references/report-format.md +6 -6
  16. package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +1 -1
  17. package/dist/.claude-template/skills/run-api-test/references/test-scope.md +6 -6
  18. package/dist/.claude-template/skills/run-ui-test/SKILL.md +186 -0
  19. package/dist/.claude-template/skills/run-ui-test/references/report-format.md +77 -0
  20. package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
  21. package/dist/.claude-template/skills/write-api/SKILL.md +18 -18
  22. package/dist/.claude-template/skills/write-api/assets/{template-api-spec.md → template-/346/216/245/345/217/243/346/265/213/350/257/225-spec.md} +1 -1
  23. package/dist/.claude-template/skills/write-api/references/{api-spec-format.md → /346/216/245/345/217/243/346/265/213/350/257/225-spec-format.md} +3 -3
  24. package/dist/.claude-template/skills/write-plan/SKILL.md +4 -2
  25. package/dist/.claude-template/skills/write-ui-test/SKILL.md +125 -0
  26. package/dist/.claude-template/skills/write-ui-test/references//347/224/250/344/276/213/350/247/204/346/240/274-format.md +94 -0
  27. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  28. package/dist/core/code/engine/cli/analyze.js +1086 -0
  29. package/dist/core/code/engine/cli/cli-message.js +83 -0
  30. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  31. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  32. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  33. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  34. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  35. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  36. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  37. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  38. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  39. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  40. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  41. package/dist/core/code/engine/cli/status.js +156 -0
  42. package/dist/core/code/engine/cli/tool.js +384 -0
  43. package/dist/core/code/engine/config/ignore-service.js +511 -0
  44. package/dist/core/code/engine/config/supported-languages.js +17 -0
  45. package/dist/core/code/engine/core/analysis-features.js +64 -0
  46. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  47. package/dist/core/code/engine/core/git-staleness.js +180 -0
  48. package/dist/core/code/engine/core/graph/graph.js +180 -0
  49. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  50. package/dist/core/code/engine/core/graph/types.js +2 -0
  51. package/dist/core/code/engine/core/index-freshness.js +12 -0
  52. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  53. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  54. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  55. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  56. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  57. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  58. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  59. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  60. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  61. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  62. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  63. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  64. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  65. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  66. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  67. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  81. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  82. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  83. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  84. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  85. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  86. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  87. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  88. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  89. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  90. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  91. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  92. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  93. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  94. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  95. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  96. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  97. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  98. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  99. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  100. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  101. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  102. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  103. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  104. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  105. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  106. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  107. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  108. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  109. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  110. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  111. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  113. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  114. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  115. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  116. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  117. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  118. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  119. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  120. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  121. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  122. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  123. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  124. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  125. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  126. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  127. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  128. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  129. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  130. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  131. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  132. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  133. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  134. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  135. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  136. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  137. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  138. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  139. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  140. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  141. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  142. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  143. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  144. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  145. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  146. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  147. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  148. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  149. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  150. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  151. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  152. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  153. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  154. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  155. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  156. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  157. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  158. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  159. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  160. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  161. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  162. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  163. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  164. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  165. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  166. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  167. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  168. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  169. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  170. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  171. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  172. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  173. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  174. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  175. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  176. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  177. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  178. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  179. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  180. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  181. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  182. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  183. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  184. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  185. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  186. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  187. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  188. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  189. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  190. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  191. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  192. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  193. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  194. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  195. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  196. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  197. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  198. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  199. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  200. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  201. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  202. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  203. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  204. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  205. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  206. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  207. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  208. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  209. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  210. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  211. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  212. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  213. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  214. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  215. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  216. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  217. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  218. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  219. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  220. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  221. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  222. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  223. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  224. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  225. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  226. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  227. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  228. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  229. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  230. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  231. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  232. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  233. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  234. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  235. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  236. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  237. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  238. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  239. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  240. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  241. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  242. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  243. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  244. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  245. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  246. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  247. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  248. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  249. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  250. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  251. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  252. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  253. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  254. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  255. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  256. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  257. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  258. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  259. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  260. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  261. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  262. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  263. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  264. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  265. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  266. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  267. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  268. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  269. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  270. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  271. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  272. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  273. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  274. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  275. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  276. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  277. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  278. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  279. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  280. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  281. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  282. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  283. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  284. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  285. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  286. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  287. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  288. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  289. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  290. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  291. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  292. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  293. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  294. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  295. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  296. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  297. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  298. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  299. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  300. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  301. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  302. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  303. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  304. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  305. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  306. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  307. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  308. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  309. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  310. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  311. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  312. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  313. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  314. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  315. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  316. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  317. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  318. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  319. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  320. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  321. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  322. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  323. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  324. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  325. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  326. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  327. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  328. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  329. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  330. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  331. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  332. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  333. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  334. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  335. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  336. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  337. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  338. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  339. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  340. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  341. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  342. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  343. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  344. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  345. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  346. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  347. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  348. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  349. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  350. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  351. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  352. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  353. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  354. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  355. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  356. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  357. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  358. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  359. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  360. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  361. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  362. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  363. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  364. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  365. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  366. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  367. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  368. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  369. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  370. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  371. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  372. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  373. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  374. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  375. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  376. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  377. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  378. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  379. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  380. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  381. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  382. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  383. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  384. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  385. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  386. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  387. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  388. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  389. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  390. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  391. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  392. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  393. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  394. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  395. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  396. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  397. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  398. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  399. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  400. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  401. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  402. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  403. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  404. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  405. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  406. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  407. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  408. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  409. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  410. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  411. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  412. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  413. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  414. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  415. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  416. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  417. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  418. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  419. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  420. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  421. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  422. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  423. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  424. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  425. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  426. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  427. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  428. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  429. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  430. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  431. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  432. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  433. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  434. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  435. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  436. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  437. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  438. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  439. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  440. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  441. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  442. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  443. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  444. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  445. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  446. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  447. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  448. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  449. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  450. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  451. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  452. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  453. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  454. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  455. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  456. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  457. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  458. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  459. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  460. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  461. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  462. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  463. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  464. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  465. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  466. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  467. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  468. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  469. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  470. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  471. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  472. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  473. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  474. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  475. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  476. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  477. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  478. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  479. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  480. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  481. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  482. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  483. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  484. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  485. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  486. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  487. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  488. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  489. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  490. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  491. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  492. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  493. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  494. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  495. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  496. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  497. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  498. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  499. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  500. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  501. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  502. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  503. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  504. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  505. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  506. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  507. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  508. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  509. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  510. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  511. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  513. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  514. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  515. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  516. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  517. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  518. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  519. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  520. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  521. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  522. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  523. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  524. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  525. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  526. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  527. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  528. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  529. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  530. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  531. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  532. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  533. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  534. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  535. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  536. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  537. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  538. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  539. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  540. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  541. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  542. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  543. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  544. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  545. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  546. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  547. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  548. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  549. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  550. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  551. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  552. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  553. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  554. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  555. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  556. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  557. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  558. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  559. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  560. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  561. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  562. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  563. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  564. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  565. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  566. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  567. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  568. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  569. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  570. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  571. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  572. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  573. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  574. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  575. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  576. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  577. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  578. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  579. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  580. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  581. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  582. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  583. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  584. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  585. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  586. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  587. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  588. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  589. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  590. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  591. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  592. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  593. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  594. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  595. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  596. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  597. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  598. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  599. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  600. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  601. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  602. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  603. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  604. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  605. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  606. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  607. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  608. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  609. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  610. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  611. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  612. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  613. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  614. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  615. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  616. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  617. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  618. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  619. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  620. package/dist/core/code/engine/core/logger.js +339 -0
  621. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  622. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  623. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  624. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  625. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  626. package/dist/core/code/engine/lib/utils.js +121 -0
  627. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  628. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  629. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  630. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  631. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  632. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  633. package/dist/core/code/engine/storage/branch-index.js +72 -0
  634. package/dist/core/code/engine/storage/file-hash.js +95 -0
  635. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  636. package/dist/core/code/engine/storage/git.js +555 -0
  637. package/dist/core/code/engine/storage/index-lock.js +664 -0
  638. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  639. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  640. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  641. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  642. package/dist/core/code/engine/types/pipeline.js +2 -0
  643. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  644. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  645. package/dist/core/code/shared/graph/types.js +8 -0
  646. package/dist/core/code/shared/index.js +105 -0
  647. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  648. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  649. package/dist/core/code/shared/integrations/retry.js +70 -0
  650. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  651. package/dist/core/code/shared/language-detection.js +162 -0
  652. package/dist/core/code/shared/languages.js +27 -0
  653. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  654. package/dist/core/code/shared/mro-strategy.js +2 -0
  655. package/dist/core/code/shared/pipeline.js +5 -0
  656. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  657. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  658. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  659. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  660. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  661. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  662. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  663. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  664. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  665. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  666. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  667. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  668. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  669. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  670. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  671. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  672. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  673. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  674. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  675. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  676. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  677. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  678. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  679. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  680. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  681. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  682. package/dist/core/code/shared/test-helpers.js +17 -0
  683. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  684. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  685. package/dist/core/dbquery/cli.d.ts.map +1 -1
  686. package/dist/core/dbquery/cli.js +5 -4
  687. package/dist/core/dbquery/cli.js.map +1 -1
  688. package/dist/core/dbquery/config.d.ts.map +1 -1
  689. package/dist/core/dbquery/config.js +39 -3
  690. package/dist/core/dbquery/config.js.map +1 -1
  691. package/dist/core/dbquery/drivers/http.d.ts +23 -0
  692. package/dist/core/dbquery/drivers/http.d.ts.map +1 -0
  693. package/dist/core/dbquery/drivers/http.js +125 -0
  694. package/dist/core/dbquery/drivers/http.js.map +1 -0
  695. package/dist/core/dbquery/drivers/mysql.js +1 -1
  696. package/dist/core/dbquery/drivers/mysql.js.map +1 -1
  697. package/dist/core/dbquery/drivers/postgres.js +1 -1
  698. package/dist/core/dbquery/drivers/postgres.js.map +1 -1
  699. package/dist/core/dbquery/executor.d.ts.map +1 -1
  700. package/dist/core/dbquery/executor.js +46 -12
  701. package/dist/core/dbquery/executor.js.map +1 -1
  702. package/dist/core/dbquery/format.d.ts.map +1 -1
  703. package/dist/core/dbquery/format.js +2 -1
  704. package/dist/core/dbquery/format.js.map +1 -1
  705. package/dist/core/dbquery/init.d.ts.map +1 -1
  706. package/dist/core/dbquery/init.js +7 -0
  707. package/dist/core/dbquery/init.js.map +1 -1
  708. package/dist/core/dbquery/types.d.ts +55 -7
  709. package/dist/core/dbquery/types.d.ts.map +1 -1
  710. package/dist/core/directory.d.ts +17 -0
  711. package/dist/core/directory.d.ts.map +1 -1
  712. package/dist/core/directory.js +37 -0
  713. package/dist/core/directory.js.map +1 -1
  714. package/dist/core/features/cli.d.ts.map +1 -1
  715. package/dist/core/features/cli.js +3 -2
  716. package/dist/core/features/cli.js.map +1 -1
  717. package/dist/core/features/scanner.d.ts +1 -1
  718. package/dist/core/features/scanner.d.ts.map +1 -1
  719. package/dist/core/features/scanner.js +20 -4
  720. package/dist/core/features/scanner.js.map +1 -1
  721. package/dist/core/markdown/cli.d.ts.map +1 -1
  722. package/dist/core/markdown/cli.js +9 -8
  723. package/dist/core/markdown/cli.js.map +1 -1
  724. package/dist/core/timeline/cli.d.ts.map +1 -1
  725. package/dist/core/timeline/cli.js +13 -6
  726. package/dist/core/timeline/cli.js.map +1 -1
  727. package/dist/core/timeline/debris.d.ts +20 -0
  728. package/dist/core/timeline/debris.d.ts.map +1 -0
  729. package/dist/core/timeline/debris.js +124 -0
  730. package/dist/core/timeline/debris.js.map +1 -0
  731. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  732. package/dist/core/timeline/hook-runner.js +3 -1
  733. package/dist/core/timeline/hook-runner.js.map +1 -1
  734. package/dist/core/timeline/hooks.d.ts.map +1 -1
  735. package/dist/core/timeline/hooks.js +13 -5
  736. package/dist/core/timeline/hooks.js.map +1 -1
  737. package/dist/core/timeline/installer.d.ts +2 -0
  738. package/dist/core/timeline/installer.d.ts.map +1 -1
  739. package/dist/core/timeline/installer.js +12 -0
  740. package/dist/core/timeline/installer.js.map +1 -1
  741. package/dist/core/timeline/project-root.d.ts +21 -0
  742. package/dist/core/timeline/project-root.d.ts.map +1 -0
  743. package/dist/core/timeline/project-root.js +83 -0
  744. package/dist/core/timeline/project-root.js.map +1 -0
  745. package/dist/web/register.d.ts.map +1 -1
  746. package/dist/web/register.js +2 -1
  747. package/dist/web/register.js.map +1 -1
  748. package/package.json +1 -1
  749. package/dist/.claude-template/.cgraphx/timeline-current-turn.json +0 -1
  750. package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +0 -1
  751. package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +0 -1
  752. package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +0 -1
  753. package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +0 -1
  754. /package/dist/.claude-template/skills/run-api-test/assets/{template-test-verify.jsonl → template-/346/216/245/345/217/243/346/265/213/350/257/225/351/252/214/350/257/201.jsonl"} +0 -0
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Synthesize `@type-binding.this` captures for TypeScript instance-like
4
+ * methods.
5
+ *
6
+ * Tree-sitter can't cleanly express "the implicit `this` receiver of a
7
+ * non-static member of a class / interface / abstract class" via a
8
+ * static `.scm` pattern, so we walk up the AST in code — mirrors
9
+ * Python's `self` / `cls` and C#'s `this` / `base` synthesis.
10
+ *
11
+ * Scope coverage:
12
+ *
13
+ * - `method_definition` inside `class_declaration`,
14
+ * `abstract_class_declaration`, or `class_expression` → synthesize
15
+ * `this` → enclosing class name.
16
+ * - `method_signature` / `abstract_method_signature` inside
17
+ * `interface_declaration` or `abstract_class_declaration` →
18
+ * synthesize `this` → enclosing type's name (so interface method
19
+ * bodies' `this.x` chains resolve via the interface's field
20
+ * annotations).
21
+ * - `arrow_function` / `function_expression` that is a direct value
22
+ * of a `public_field_definition` (class field) — `m = () => {}` —
23
+ * synthesize `this` → enclosing class name. These capture `this`
24
+ * lexically; without synthesis, their body's `this.foo` wouldn't
25
+ * resolve.
26
+ *
27
+ * Not synthesized (intentionally):
28
+ *
29
+ * - `static` methods / static fields. `this` in a static context
30
+ * refers to the class constructor, not an instance; we leave the
31
+ * binding empty and let chain resolution fall through to the
32
+ * class's static members lookup.
33
+ * - Regular `function_declaration` / `function_expression` at
34
+ * module level or in a non-class context. No enclosing type, no
35
+ * `this` semantics.
36
+ * - Arrow functions nested inside a method body. The scope-chain
37
+ * walk in `tsReceiverBinding` finds the outer method's `this`
38
+ * naturally, matching TS's lexical-this rule for arrow functions.
39
+ *
40
+ * Each synthesized match emits the anchor captures needed by
41
+ * `interpretTsTypeBinding`:
42
+ *
43
+ * `@type-binding.this` (source discriminator — interpret maps to 'self')
44
+ * `@type-binding.name` (the literal `'this'`)
45
+ * `@type-binding.type` (the enclosing type's name)
46
+ */
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.THIS_REBINDING_BOUNDARY_TYPES = void 0;
49
+ exports.synthesizeTsReceiverBinding = synthesizeTsReceiverBinding;
50
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
51
+ /** Node types that define a TypeScript "type with instance members". */
52
+ const TYPE_DECL_NODE_TYPES = new Set([
53
+ 'class_declaration',
54
+ 'abstract_class_declaration',
55
+ 'class',
56
+ 'interface_declaration',
57
+ ]);
58
+ /** Scope function nodes that could be a class method body. */
59
+ const CLASS_MEMBER_FUNCTION_TYPES = new Set([
60
+ 'method_definition',
61
+ 'method_signature',
62
+ 'abstract_method_signature',
63
+ ]);
64
+ /** Function-like values that can back a class field (`m = () => {}`). */
65
+ const CLASS_FIELD_FUNCTION_TYPES = new Set(['arrow_function', 'function_expression']);
66
+ /**
67
+ * Produce zero or one `CaptureMatch` synthesizing `this` for `fnNode`.
68
+ *
69
+ * - `null` — function has no synthetic `this` (free / static /
70
+ * not-in-class / no name on enclosing type).
71
+ * - One match — anchor on the function body so the synthetic binding
72
+ * attaches to the function's scope (not the outer class scope).
73
+ *
74
+ * The caller is responsible for passing a `fnNode` whose type is one
75
+ * of the scope function nodes the scope query emits.
76
+ */
77
+ function synthesizeTsReceiverBinding(fnNode) {
78
+ // Classify the function's role.
79
+ const role = classifyFunctionRole(fnNode);
80
+ if (role === null)
81
+ return null;
82
+ // Static methods / static fields don't have an instance `this`.
83
+ if (isStaticMember(role.memberNode))
84
+ return null;
85
+ // Find enclosing type declaration. Walking past function-like
86
+ // boundaries is fine — nested local functions inside a method can
87
+ // still reference outer `this` through the lexical chain, but we
88
+ // only synthesize on the immediate function body. The resolver's
89
+ // scope-chain walk reaches ancestor synthesized bindings for nested
90
+ // arrow functions.
91
+ const enclosingType = findEnclosingType(role.memberNode);
92
+ if (enclosingType === null)
93
+ return null;
94
+ const typeName = getTypeDeclName(enclosingType);
95
+ if (typeName === null)
96
+ return null;
97
+ // Anchor the synthetic capture on the function body so the binding
98
+ // lands in the method's scope, not its parent type scope. Method
99
+ // signatures in interfaces / abstract classes have no body — use
100
+ // the method node itself as the anchor; scope-extractor attaches
101
+ // it to the function scope created by the `@scope.function`
102
+ // anchor at the same range.
103
+ const anchorNode = fnNode.childForFieldName('body') ?? fnNode;
104
+ return buildThisBinding(anchorNode, typeName);
105
+ }
106
+ /**
107
+ * Decide whether `fnNode` participates as a class member. Returns
108
+ * `null` when the function is not structurally "a class instance
109
+ * member" — e.g. a free function, a non-method arrow expression, an
110
+ * arrow inside a method body (those inherit `this` via scope chain
111
+ * lookup, no synthesis needed).
112
+ */
113
+ function classifyFunctionRole(fnNode) {
114
+ if (CLASS_MEMBER_FUNCTION_TYPES.has(fnNode.type)) {
115
+ return { memberNode: fnNode };
116
+ }
117
+ if (CLASS_FIELD_FUNCTION_TYPES.has(fnNode.type)) {
118
+ // `public_field_definition` represents a class field. Only when
119
+ // the arrow/function-expression is a DIRECT value of a field do
120
+ // we treat it as a class method with synthesized `this`.
121
+ const parent = fnNode.parent;
122
+ if (parent !== null && parent.type === 'public_field_definition') {
123
+ const valueField = parent.childForFieldName('value');
124
+ if (valueField !== null && valueField.startIndex === fnNode.startIndex) {
125
+ return { memberNode: parent };
126
+ }
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ /** Class-body definitions carry an optional `accessibility_modifier` and
132
+ * optional `static` keyword as named children. The `static` token is
133
+ * usually a plain child of the member node — not a named field — so
134
+ * we scan children for a token whose text is exactly `static`. */
135
+ function isStaticMember(memberNode) {
136
+ for (let i = 0; i < memberNode.childCount; i++) {
137
+ const c = memberNode.child(i);
138
+ if (c === null)
139
+ continue;
140
+ // `static` can appear as an unnamed token or as a `readonly` /
141
+ // `static` keyword node depending on grammar version; check text.
142
+ if (c.text === 'static')
143
+ return true;
144
+ }
145
+ return false;
146
+ }
147
+ /**
148
+ * Nodes that REBIND `this`, so the walk for an enclosing type must stop at them.
149
+ *
150
+ * Without these the walk ran to the top of the file and happily synthesized a binding
151
+ * from a type that does not own the member. An object-literal method nested in a class
152
+ * bound `this` to the CLASS:
153
+ *
154
+ * class A { outer() { const o = { inner() { return this.x; } }; return o; } }
155
+ *
156
+ * `this` inside `o.inner` is `o`, never `A` — so every `this.…` in such a method
157
+ * resolved against the wrong type. Only the module-level object literal escaped, because
158
+ * there was no enclosing class to reach.
159
+ *
160
+ * An arrow is deliberately absent: it inherits `this` lexically, so the walk SHOULD pass
161
+ * through it (that is what makes a class-field arrow `m = () => this.x` resolve).
162
+ */
163
+ exports.THIS_REBINDING_BOUNDARY_TYPES = new Set([
164
+ 'object', // object literal — `this` is the literal, not any enclosing type
165
+ 'function_declaration',
166
+ 'function_expression',
167
+ 'generator_function',
168
+ 'generator_function_declaration',
169
+ ]);
170
+ function findEnclosingType(node) {
171
+ let cur = node.parent;
172
+ while (cur !== null) {
173
+ // Boundary before the type check: a rebinding node between the member and a type
174
+ // means the type does not own this `this`.
175
+ if (exports.THIS_REBINDING_BOUNDARY_TYPES.has(cur.type))
176
+ return null;
177
+ if (TYPE_DECL_NODE_TYPES.has(cur.type))
178
+ return cur;
179
+ cur = cur.parent;
180
+ }
181
+ return null;
182
+ }
183
+ /** Return the declared name of a class / interface / abstract-class.
184
+ * `class_expression` ( `const X = class { … }` ) may lack a name —
185
+ * in that case we return `null` and the caller skips synthesis (the
186
+ * outer variable's name is the usable handle, but wiring it would
187
+ * require a separate walk; defer to a follow-up). */
188
+ function getTypeDeclName(typeNode) {
189
+ const nameField = typeNode.childForFieldName('name');
190
+ if (nameField === null)
191
+ return null;
192
+ return nameField.text;
193
+ }
194
+ function buildThisBinding(anchorNode, typeText) {
195
+ const m = {
196
+ '@type-binding.this': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.this', anchorNode),
197
+ '@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', anchorNode, 'this'),
198
+ '@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', anchorNode, typeText),
199
+ };
200
+ return m;
201
+ }
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript `ScopeResolver` registered in `SCOPE_RESOLVERS` and
4
+ * consumed by the generic `runScopeResolution` orchestrator
5
+ * (RFC #909 Ring 3).
6
+ *
7
+ * Third migration after Python and C#. Follows the same minimal
8
+ * wiring-only pattern — per-hook logic lives in the sibling modules
9
+ * (`arity.ts`, `merge-bindings.ts`, `import-target.ts`, etc.).
10
+ *
11
+ * See ./index.ts for the per-module rationale and the full list of
12
+ * known limitations. The canonical capture vocabulary is pinned in
13
+ * ./query.ts (TYPESCRIPT_SCOPE_QUERY constant).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.typescriptScopeResolver = void 0;
17
+ const index_js_1 = require("../../../../../shared/index.js");
18
+ const utils_js_1 = require("../../../../lib/utils.js");
19
+ const mro_js_1 = require("../../scope-resolution/passes/mro.js");
20
+ const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
21
+ const node_lookup_js_1 = require("../../scope-resolution/graph-bridge/node-lookup.js");
22
+ const typescript_js_1 = require("../typescript.js");
23
+ const language_config_js_1 = require("../../language-config.js");
24
+ const utils_js_2 = require("../../import-resolvers/utils.js");
25
+ const shared_js_1 = require("../../type-extractors/shared.js");
26
+ const index_js_2 = require("./index.js");
27
+ const nuxt_auto_imports_js_1 = require("./nuxt-auto-imports.js");
28
+ const TYPESCRIPT_TYPE_ONLY_BINDING_TYPES = new Set([
29
+ 'Interface',
30
+ 'Type',
31
+ 'TypeAlias',
32
+ 'Typedef',
33
+ 'Trait',
34
+ 'Annotation',
35
+ 'Decorator',
36
+ ]);
37
+ /**
38
+ * Build a `resolveImportTarget` adapter that memoizes the workspace
39
+ * file list, the lower-cased file list, and the per-pass `resolveCache`
40
+ * across every import lookup in a single workspace pass. The
41
+ * orchestrator passes the same `ReadonlySet` reference for every call
42
+ * within a pass — we use that identity to detect when the workspace
43
+ * changes and recompute the derived state lazily.
44
+ *
45
+ * Without this memoization, `resolveTsTarget` re-derived
46
+ * `allFileList` and `normalizedFileList` (both O(N_files)) and threw
47
+ * away the `resolveCache` on every import — O(N_files × N_imports)
48
+ * total work for what should be O(N_files + N_imports).
49
+ */
50
+ function makeTsResolveImportTarget() {
51
+ let cached = null;
52
+ return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
53
+ if (cached === null || cached.key !== allFilePaths) {
54
+ const allFileList = Array.from(allFilePaths);
55
+ const normalizedFileList = allFileList.map((f) => f.toLowerCase());
56
+ cached = {
57
+ key: allFilePaths,
58
+ allFilePaths: new Set(allFilePaths),
59
+ allFileList,
60
+ normalizedFileList,
61
+ index: (0, utils_js_2.buildSuffixIndex)(normalizedFileList, allFileList),
62
+ resolveCache: new Map(),
63
+ };
64
+ }
65
+ const cfg = resolutionConfig;
66
+ const ws = {
67
+ fromFile,
68
+ allFilePaths: cached.allFilePaths,
69
+ allFileList: cached.allFileList,
70
+ normalizedFileList: cached.normalizedFileList,
71
+ index: cached.index,
72
+ resolveCache: cached.resolveCache,
73
+ tsconfigPaths: cfg?.tsconfigPaths ?? null,
74
+ };
75
+ return (0, index_js_2.resolveTsTarget)(targetRaw, ws);
76
+ };
77
+ }
78
+ const typescriptScopeResolver = {
79
+ // One hook, both routes. TypeScript exposes collection views as METHOD calls
80
+ // (`.values()`), which the call-expression branch already handles, so the
81
+ // accessor route yields nothing here — but it is now the same hook rather
82
+ // than a second one left undefined.
83
+ elementTypeOf: shared_js_1.indexOnlyElementType,
84
+ // Construction is keyword-prefixed: `new Service(db).doWork()` (#2708).
85
+ constructionSyntax: { keyword: 'new' },
86
+ language: index_js_1.SupportedLanguages.TypeScript,
87
+ languageProvider: typescript_js_1.typescriptProvider,
88
+ importEdgeReason: 'typescript-scope: import',
89
+ resolveImportTarget: makeTsResolveImportTarget(),
90
+ // Threaded into `resolveImportTarget` so tsconfig path aliases
91
+ // (`@/services/user`, `~/x`, ...) resolve through the same standard
92
+ // resolver branch the legacy DAG uses. One I/O round-trip per
93
+ // workspace pass; the orchestrator awaits this once.
94
+ // `nuxtAutoImports` is null for non-Nuxt projects (no .nuxt/imports.d.ts),
95
+ // so this adds zero overhead to ordinary TypeScript repos.
96
+ loadResolutionConfig: async (repoPath) => ({
97
+ tsconfigPaths: await (0, language_config_js_1.loadTsconfigPaths)(repoPath),
98
+ nuxtAutoImports: await (0, nuxt_auto_imports_js_1.loadNuxtAutoImports)(repoPath),
99
+ }),
100
+ // TypeScript declaration merging + LEGB: local > import > wildcard,
101
+ // separated by declaration space (value / type / namespace). The
102
+ // per-scope id is unused (shadowing is computed from origin + def.type),
103
+ // so we don't need to synthesize a Scope here.
104
+ mergeBindings: (existing, incoming) => [...(0, index_js_2.typescriptMergeBindings)([...existing, ...incoming])],
105
+ // Adapter: typescriptArityCompatibility uses (def, callsite); the
106
+ // ScopeResolver contract is (callsite, def).
107
+ arityCompatibility: (callsite, def) => (0, index_js_2.typescriptArityCompatibility)(def, callsite),
108
+ buildMro: (graph, parsedFiles, nodeLookup) => (0, mro_js_1.buildMro)(graph, parsedFiles, nodeLookup, mro_js_1.defaultLinearize),
109
+ populateOwners: (parsed) => (0, walkers_js_1.populateClassOwnedMembers)(parsed),
110
+ // TypeScript uses `super` for super-class dispatch as a plain
111
+ // identifier or as `super()` in constructors. Match both — `super`
112
+ // on its own (`super.foo`, `super[x]`) and `super(...)` (constructor
113
+ // chain). This also correctly rejects identifiers that merely
114
+ // contain the substring `super` (e.g. `superman`).
115
+ isSuperReceiver: (text) => /^super(\s*\(|\s*\.|\s*\[|\s*$)/.test(text.trim()),
116
+ // TypeScript is statically typed — field-fallback heuristic off
117
+ // (the type-binding layer produces precise owner types). Return-
118
+ // type propagation across imports on (matches the legacy DAG's
119
+ // behavior: explicit return-type annotations flow across `export`
120
+ // boundaries and resolve chained member calls).
121
+ fieldFallbackOnMethodLookup: false,
122
+ propagatesReturnTypesAcrossImports: true,
123
+ // TypeScript uses `.values()` / `.keys()` method-call syntax for collection
124
+ // views -- no property-style accessors like C#'s `Dictionary<K,V>.Values` --
125
+ // so `elementTypeOf` answers only the `index` route and lets the regular
126
+ // member-call branch handle the rest.
127
+ //
128
+ // `collapseMemberCallsByCallerTarget` left undefined (= false) --
129
+ // TypeScript legacy DAG emits one edge per call site, so
130
+ // per-site dedup is the parity target.
131
+ //
132
+ // `populateNamespaceSiblings` left undefined -- TypeScript requires
133
+ // an explicit `import` / namespace augmentation for cross-file
134
+ // visibility; there's no implicit same-namespace sibling rule
135
+ // like C#'s.
136
+ //
137
+ // `hoistTypeBindingsToModule` -- `tsBindingScopeFor` DOES hoist
138
+ // method return-type bindings to the enclosing Module scope
139
+ // (mirrors C#), so enable the walk-up that lets the compound-
140
+ // receiver resolver find them.
141
+ hoistTypeBindingsToModule: true,
142
+ /**
143
+ * Emit CALLS edges for Nuxt/Nitro auto-imported symbols that are used
144
+ * without an explicit import statement.
145
+ *
146
+ * Nuxt makes composables and server utils available project-wide via its
147
+ * auto-import system. Because no `import` statement exists, the standard
148
+ * scope-resolution passes cannot create call-graph edges for these symbols.
149
+ * This hook recovers those edges after all normal resolution has run.
150
+ *
151
+ * For each TypeScript file the hook:
152
+ * 1. Builds the set of files already explicitly imported (to avoid
153
+ * creating duplicate edges for symbols imported conventionally).
154
+ * 2. Iterates parsed free-call reference sites and checks each against the
155
+ * auto-import map selected for the caller's Nuxt/Nitro scope.
156
+ * 3. For each hit that is not shadowed by a local binding or explicit
157
+ * import, emits a CALLS edge from the file's File node to the target
158
+ * function node, and an IMPORTS edge from the caller file to the source
159
+ * file (once per pair).
160
+ *
161
+ * Confidence is 0.75 (below the 0.9 used for fully resolved edges) to
162
+ * signal that these edges are heuristic rather than type-checked.
163
+ */
164
+ emitPostResolutionEdges(graph, parsedFiles, nodeLookup, indexes, ctx) {
165
+ const cfg = ctx.resolutionConfig;
166
+ const autoImports = cfg?.nuxtAutoImports;
167
+ if (!autoImports || !(0, nuxt_auto_imports_js_1.hasNuxtAutoImports)(autoImports))
168
+ return;
169
+ // Pre-build a file -> explicit imported local names index so importing one
170
+ // symbol from a source does not suppress other auto-imported symbols from it.
171
+ const explicitImportNamesByFile = new Map();
172
+ for (const [scopeId, edges] of indexes.imports) {
173
+ const scope = indexes.scopeTree.getScope(scopeId);
174
+ if (!scope?.filePath)
175
+ continue;
176
+ let names = explicitImportNamesByFile.get(scope.filePath);
177
+ if (!names) {
178
+ names = new Set();
179
+ explicitImportNamesByFile.set(scope.filePath, names);
180
+ }
181
+ for (const edge of edges) {
182
+ // Record the local name whether or not the import resolved to a file.
183
+ // An explicit import of a name — even from an unresolved external
184
+ // package (`import { useAuto } from '@vueuse/core'`) — is authoritative
185
+ // shadowing intent and must suppress the auto-import for that name.
186
+ if (edge.localName)
187
+ names.add(edge.localName);
188
+ }
189
+ }
190
+ for (const parsedFile of parsedFiles) {
191
+ const { filePath } = parsedFile;
192
+ if (!filePath.endsWith('.ts') && !filePath.endsWith('.tsx'))
193
+ continue;
194
+ const fileId = (0, utils_js_1.generateId)('File', filePath);
195
+ const explicitImports = explicitImportNamesByFile.get(filePath) ?? new Set();
196
+ // Track (sourceFile) pairs already handled for this caller to avoid
197
+ // emitting duplicate IMPORTS edges and duplicate CALLS edges per symbol.
198
+ const emittedImports = new Set();
199
+ const emittedCalls = new Set();
200
+ for (const site of parsedFile.referenceSites) {
201
+ if (site.kind !== 'call' || site.callForm !== 'free')
202
+ continue;
203
+ const localName = site.name;
204
+ const entry = (0, nuxt_auto_imports_js_1.getNuxtAutoImportEntry)(autoImports, localName, filePath);
205
+ if (!entry)
206
+ continue;
207
+ const { exportName, sourceFile } = entry;
208
+ // Skip when the file already binds this name explicitly, when the file
209
+ // IS the source, or when a lexical same-file binding shadows it.
210
+ if (explicitImports.has(localName) ||
211
+ sourceFile === filePath ||
212
+ hasLocalBindingInScopeChain(site.inScope, localName, filePath, indexes)) {
213
+ continue;
214
+ }
215
+ // Emit one IMPORTS edge per (caller, sourceFile) pair.
216
+ if (!emittedImports.has(sourceFile)) {
217
+ emittedImports.add(sourceFile);
218
+ const targetFileId = (0, utils_js_1.generateId)('File', sourceFile);
219
+ if (graph.getNode(targetFileId)) {
220
+ graph.addRelationship({
221
+ id: (0, utils_js_1.generateId)('IMPORTS', `${fileId}->nuxt-auto-import->${targetFileId}`),
222
+ sourceId: fileId,
223
+ targetId: targetFileId,
224
+ type: 'IMPORTS',
225
+ confidence: 0.75,
226
+ reason: 'nuxt-auto-import-file',
227
+ });
228
+ }
229
+ }
230
+ // Emit one CALLS edge per (caller, symbol) pair.
231
+ const callKey = `${sourceFile}::${localName}`;
232
+ if (emittedCalls.has(callKey))
233
+ continue;
234
+ emittedCalls.add(callKey);
235
+ // Look up the graph node by export name first, fall back to local name.
236
+ // The fallback handles `default as X` where the function is named X.
237
+ const targetNodeId = nodeLookup.get((0, node_lookup_js_1.simpleKey)(sourceFile, exportName)) ??
238
+ (exportName !== localName ? nodeLookup.get((0, node_lookup_js_1.simpleKey)(sourceFile, localName)) : undefined);
239
+ if (!targetNodeId || !graph.getNode(targetNodeId))
240
+ continue;
241
+ graph.addRelationship({
242
+ id: (0, utils_js_1.generateId)('CALLS', `${fileId}:nuxt-auto-import:${localName}->${targetNodeId}`),
243
+ sourceId: fileId,
244
+ targetId: targetNodeId,
245
+ type: 'CALLS',
246
+ confidence: 0.75,
247
+ reason: 'nuxt-auto-import',
248
+ });
249
+ }
250
+ }
251
+ },
252
+ };
253
+ exports.typescriptScopeResolver = typescriptScopeResolver;
254
+ function occupiesTypeScriptValueSpace(type) {
255
+ return !TYPESCRIPT_TYPE_ONLY_BINDING_TYPES.has(type);
256
+ }
257
+ function hasLocalBindingInScopeChain(scopeId, name, filePath, indexes) {
258
+ const visited = new Set();
259
+ let cursor = scopeId;
260
+ while (cursor !== null && cursor !== undefined && !visited.has(cursor)) {
261
+ visited.add(cursor);
262
+ const scope = indexes.scopeTree.getScope(cursor);
263
+ if (!scope)
264
+ return false;
265
+ const localBindings = scope.bindings.get(name);
266
+ if (localBindings?.some((binding) => binding.origin === 'local' &&
267
+ binding.def.filePath === filePath &&
268
+ occupiesTypeScriptValueSpace(binding.def.type))) {
269
+ return true;
270
+ }
271
+ // Type-annotated function parameters — and other value-space type facts
272
+ // such as `self` and variable annotations — live in `scope.typeBindings`,
273
+ // not `scope.bindings`. A parameter named like a composable genuinely
274
+ // shadows the auto-import, and typeBindings never holds a pure type that
275
+ // belongs to callable space, so a same-file presence check here cannot
276
+ // over-suppress a legitimate auto-import.
277
+ //
278
+ // Residual (known limitation): this catches parameters whose annotation the
279
+ // TS scope query records as a type-binding (`p: Named`, generics, unions,
280
+ // predefined, arrays). Function-typed params (`p: () => void`), untyped
281
+ // params, destructured locals (`const { x } = …`), and catch-clause vars
282
+ // are captured by NEITHER map — the scope query emits no `@declaration` /
283
+ // `@type-binding` for them — so those shadow forms still leak an edge.
284
+ // Closing that needs shared TS scope-query/extractor changes that alter call
285
+ // resolution beyond Nuxt, so it is deferred to a follow-up rather than fixed
286
+ // here.
287
+ if (scope.filePath === filePath && scope.typeBindings.has(name)) {
288
+ return true;
289
+ }
290
+ cursor = scope.parent;
291
+ }
292
+ return false;
293
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * Trivial / no-op-ish hooks for the TypeScript provider. Kept together
4
+ * because each is a few lines and they share a common theme: making
5
+ * the provider's choice explicit rather than relying on "absence ==
6
+ * default" so reviewers don't have to re-derive the analysis.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.tsBindingScopeFor = tsBindingScopeFor;
10
+ exports.tsImportOwningScope = tsImportOwningScope;
11
+ exports.tsReceiverBinding = tsReceiverBinding;
12
+ const scope_tree_walk_js_1 = require("../../utils/scope-tree-walk.js");
13
+ // ─── bindingScopeFor ──────────────────────────────────────────────────────
14
+ /**
15
+ * TypeScript/JavaScript has block-scoped `let`/`const` (the innermost
16
+ * default covers these) but function-scoped `var` — which hoists to
17
+ * the enclosing **function or module** scope, bypassing intermediate
18
+ * blocks. JS also function-hoists `function_declaration` to the same
19
+ * level.
20
+ *
21
+ * We distinguish var from let/const by sniffing the `@declaration.variable`
22
+ * capture's leading keyword. The capture's text begins with the
23
+ * source-literal keyword (`var ` / `let ` / `const `) because the
24
+ * anchor is the outer `lexical_declaration` / `variable_declaration`
25
+ * node — there's no whitespace before the keyword in any well-formed
26
+ * TS/JS source.
27
+ *
28
+ * Additionally hoists **method return-type bindings**
29
+ * (`@type-binding.return`) all the way to the Module scope, matching
30
+ * C#: the compound-receiver walker and `propagateImportedReturnTypes`
31
+ * both read from module-level typeBindings for cross-file chain
32
+ * propagation.
33
+ */
34
+ function tsBindingScopeFor(decl, innermost, tree) {
35
+ // Method return type: hoist to Module (mirrors csharpBindingScopeFor).
36
+ if (decl['@type-binding.return'] !== undefined) {
37
+ return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Module');
38
+ }
39
+ // Parameter property (`constructor(public address: Address)`): hoist
40
+ // to the enclosing Class scope so `user.address` field access
41
+ // resolves through the class's typeBindings. The regular
42
+ // @type-binding.parameter binding still fires for the constructor
43
+ // scope; this one adds a second binding on the class.
44
+ if (decl['@type-binding.parameter-property'] !== undefined) {
45
+ return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Class');
46
+ }
47
+ // `this.p = new Outer()` binds the FIELD, not a method-local, so the binding
48
+ // belongs on the class the way an annotated field's does — that is the only
49
+ // place `typeOfMemberOnClass` reads. Left on the innermost scope it would sit
50
+ // on the method's own Function scope and never be found (#2807). Same shape
51
+ // as the parameter-property branch above.
52
+ //
53
+ // Gated on the marker the `this.<field> = new …` pattern emits, never on
54
+ // `@type-binding.constructor` at large: that capture also fires for
55
+ // `const o = new Outer()` inside a method, and hoisting THOSE to the class
56
+ // would take method locals out of their own scope and mistype them.
57
+ //
58
+ // This walk is UNCONDITIONAL by design, and stays correct only because the
59
+ // marker's producers are bounded: the query nests the pattern under
60
+ // `class_body → method_definition → statement_block`, and `emitTsScopeCaptures`
61
+ // drops the static-method case. So `this` here provably IS an instance of the
62
+ // class this lands on, and a Class ancestor always exists — no `walkToScope`
63
+ // null-fallback onto some unrelated innermost scope. Anything that widens the
64
+ // marker's producers has to re-establish both, or restore the guard here.
65
+ if (decl['@type-binding.this-field'] !== undefined) {
66
+ return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Class');
67
+ }
68
+ // `var` declarations: hoist to nearest enclosing Function or Module.
69
+ const variable = decl['@declaration.variable'];
70
+ if (variable !== undefined && isVarDeclaration(variable.text)) {
71
+ return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Function', 'Module');
72
+ }
73
+ // Function declarations are already anchored at their definition
74
+ // site via `@scope.function`; hoisting is a no-op for them (JS
75
+ // function hoisting is about visibility before the definition, not
76
+ // about placing the binding in a different scope). The scope tree
77
+ // already attaches their name to the enclosing scope. No override
78
+ // needed.
79
+ return null;
80
+ }
81
+ /** `var x = 1;` vs `let x = 1;` / `const x = 1;`. The capture's text
82
+ * starts at the outer declaration's `startIndex` in source, which is
83
+ * the keyword's first character — no leading whitespace possible. */
84
+ function isVarDeclaration(captureText) {
85
+ return (captureText.startsWith('var ') ||
86
+ captureText.startsWith('var\t') ||
87
+ captureText.startsWith('var\n'));
88
+ }
89
+ // ─── importOwningScope ────────────────────────────────────────────────────
90
+ /**
91
+ * TypeScript imports are syntactically top-level: `import_statement` is
92
+ * legal only inside `program` (the module root). `namespace X { … }`
93
+ * bodies CAN contain imports (`internal_module`), in which case the
94
+ * import scopes to the namespace. Dynamic `import()` calls appear
95
+ * inside any scope but their runtime effect is still a module-level
96
+ * resolution — we attach the `ParsedImport` to the innermost Module /
97
+ * Namespace scope so the binding is visible through the full subtree.
98
+ *
99
+ * Returning `null` delegates to the central default, which walks to
100
+ * the nearest enclosing `Module`/`Namespace`. That matches our rule,
101
+ * so we only override when we explicitly need a non-default scope
102
+ * (we don't).
103
+ */
104
+ function tsImportOwningScope(_imp, _innermost, _tree) {
105
+ return null;
106
+ }
107
+ // ─── receiverBinding ──────────────────────────────────────────────────────
108
+ /**
109
+ * Look up `this` on the function scope's type bindings.
110
+ *
111
+ * `this` is synthesized as a type binding on instance-method function
112
+ * scopes during capture emission (`receiver-binding.ts`). Arrow
113
+ * functions and nested functions that reference `this` naturally
114
+ * resolve it via the scope-chain walk — if the arrow function is a
115
+ * class method (`m = () => {}`), it gets a synthesized `this`; if it
116
+ * is nested inside a class method, the scope-chain lookup finds the
117
+ * outer method's `this`. This mirrors TypeScript's lexical-this
118
+ * semantics for arrow functions.
119
+ *
120
+ * Returns `null` for:
121
+ * - static methods (no `this` synthesized)
122
+ * - free functions / module-level code (no enclosing class-like)
123
+ * - non-Function scopes
124
+ *
125
+ * Caveat: a non-arrow `function` declaration nested inside a method
126
+ * DOES see the outer `this` via our scope-chain lookup, even though at
127
+ * runtime its `this` is independently bound (strict-mode `undefined`,
128
+ * sloppy `globalThis`). We accept this false-positive — the real-world
129
+ * pattern that relies on independent `this` inside a nested regular
130
+ * function inside a class method is extremely rare, and catching it
131
+ * would require injecting a `this: undefined` shadow on every non-
132
+ * arrow function scope. Documented as a known limitation in
133
+ * `index.ts`.
134
+ */
135
+ function tsReceiverBinding(functionScope) {
136
+ if (functionScope.kind !== 'Function')
137
+ return null;
138
+ return functionScope.typeBindings.get('this') ?? null;
139
+ }