gitnexus 1.6.10-rc.99 → 1.6.10

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 (775) hide show
  1. package/README.md +177 -18
  2. package/dist/_shared/graph/types.d.ts +21 -2
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +3 -3
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js +1 -1
  7. package/dist/_shared/index.js.map +1 -1
  8. package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
  9. package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
  10. package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
  11. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  12. package/dist/_shared/integrations/resilient-fetch.js +19 -7
  13. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  14. package/dist/_shared/language-detection.d.ts.map +1 -1
  15. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  16. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  17. package/dist/_shared/lbug/schema-constants.js +3 -0
  18. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  19. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
  20. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
  21. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  22. package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
  23. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  24. package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
  25. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  26. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  27. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
  28. package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
  29. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  30. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  31. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  32. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  33. package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
  34. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  35. package/dist/_shared/scope-resolution/types.d.ts +278 -3
  36. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  37. package/dist/cli/ai-context.d.ts +3 -2
  38. package/dist/cli/ai-context.js +71 -16
  39. package/dist/cli/analyze-config.d.ts +1 -1
  40. package/dist/cli/analyze-options.d.ts +131 -0
  41. package/dist/cli/analyze-options.js +1 -0
  42. package/dist/cli/analyze.d.ts +21 -113
  43. package/dist/cli/analyze.js +172 -29
  44. package/dist/cli/cli-message.d.ts +1 -1
  45. package/dist/cli/detect-changes-format.js +19 -2
  46. package/dist/cli/doctor.d.ts +12 -0
  47. package/dist/cli/doctor.js +32 -5
  48. package/dist/cli/editor-targets.js +6 -0
  49. package/dist/cli/eval-server.js +2 -1
  50. package/dist/cli/format-symbol.d.ts +15 -0
  51. package/dist/cli/format-symbol.js +17 -0
  52. package/dist/cli/generated-skill.d.ts +17 -0
  53. package/dist/cli/generated-skill.js +1 -0
  54. package/dist/cli/group.js +229 -21
  55. package/dist/cli/help-i18n.js +1 -2
  56. package/dist/cli/i18n/en.d.ts +11 -9
  57. package/dist/cli/i18n/en.js +13 -9
  58. package/dist/cli/i18n/resources.d.ts +15 -11
  59. package/dist/cli/i18n/zh-CN.d.ts +4 -2
  60. package/dist/cli/i18n/zh-CN.js +11 -9
  61. package/dist/cli/index.js +8 -4
  62. package/dist/cli/resolve-invocation.d.ts +7 -3
  63. package/dist/cli/resolve-invocation.js +7 -3
  64. package/dist/cli/setup.js +4 -3
  65. package/dist/cli/skill-gen.d.ts +1 -6
  66. package/dist/cli/tool.d.ts +1 -0
  67. package/dist/cli/tool.js +74 -17
  68. package/dist/cli/wiki.js +53 -10
  69. package/dist/config/ignore-service.d.ts +2 -0
  70. package/dist/config/ignore-service.js +54 -13
  71. package/dist/core/analyzer-identity.d.ts +80 -0
  72. package/dist/core/analyzer-identity.js +364 -26
  73. package/dist/core/augmentation/engine.js +86 -71
  74. package/dist/core/embedding-checkpoint.d.ts +143 -0
  75. package/dist/core/embedding-checkpoint.js +221 -0
  76. package/dist/core/embedding-count.d.ts +61 -0
  77. package/dist/core/embedding-count.js +69 -0
  78. package/dist/core/embeddings/ast-utils.js +9 -1
  79. package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
  80. package/dist/core/embeddings/embedding-pipeline.js +253 -14
  81. package/dist/core/embeddings/http-client.d.ts +5 -0
  82. package/dist/core/embeddings/http-client.js +142 -27
  83. package/dist/core/graph/graph.js +3 -0
  84. package/dist/core/graph/import-cycles.d.ts +194 -3
  85. package/dist/core/graph/import-cycles.js +522 -73
  86. package/dist/core/graph/types.d.ts +18 -0
  87. package/dist/core/group/bridge-db.d.ts +204 -1
  88. package/dist/core/group/bridge-db.js +401 -28
  89. package/dist/core/group/completeness.d.ts +130 -0
  90. package/dist/core/group/completeness.js +83 -0
  91. package/dist/core/group/config-parser.js +0 -5
  92. package/dist/core/group/cross-impact.d.ts +46 -1
  93. package/dist/core/group/cross-impact.js +220 -19
  94. package/dist/core/group/cross-trace.d.ts +32 -11
  95. package/dist/core/group/cross-trace.js +114 -20
  96. package/dist/core/group/extractors/http-patterns/java.js +278 -22
  97. package/dist/core/group/extractors/http-patterns/node.js +332 -216
  98. package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
  99. package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
  100. package/dist/core/group/extractors/http-route-extractor.js +122 -48
  101. package/dist/core/group/extractors/include-extractor.js +20 -2
  102. package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
  103. package/dist/core/group/extractors/manifest-extractor.js +7 -7
  104. package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
  105. package/dist/core/group/group-lock.d.ts +31 -0
  106. package/dist/core/group/group-lock.js +166 -0
  107. package/dist/core/group/service.js +297 -16
  108. package/dist/core/group/storage.d.ts +3 -0
  109. package/dist/core/group/storage.js +7 -39
  110. package/dist/core/group/sync.d.ts +49 -3
  111. package/dist/core/group/sync.js +0 -0
  112. package/dist/core/group/types.d.ts +183 -8
  113. package/dist/core/group/types.js +28 -1
  114. package/dist/core/incremental/subgraph-extract.d.ts +9 -6
  115. package/dist/core/incremental/subgraph-extract.js +33 -10
  116. package/dist/core/index-freshness.d.ts +77 -2
  117. package/dist/core/index-freshness.js +109 -2
  118. package/dist/core/ingestion/call-processor.d.ts +13 -1
  119. package/dist/core/ingestion/call-processor.js +110 -3
  120. package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
  121. package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
  122. package/dist/core/ingestion/cfg/emit.d.ts +8 -23
  123. package/dist/core/ingestion/cfg/emit.js +9 -23
  124. package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
  125. package/dist/core/ingestion/cluster-enricher.js +8 -4
  126. package/dist/core/ingestion/community-processor.d.ts +21 -3
  127. package/dist/core/ingestion/community-processor.js +81 -82
  128. package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
  129. package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
  130. package/dist/core/ingestion/di-extractors/spring.js +8 -1
  131. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  132. package/dist/core/ingestion/di-extractors/types.js +15 -0
  133. package/dist/core/ingestion/filesystem-walker.js +30 -14
  134. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  135. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
  136. package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
  137. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  138. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  139. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  140. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  141. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  142. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  143. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  144. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  145. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
  146. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  147. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  148. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  149. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  150. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
  151. package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
  152. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  153. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  154. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  155. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  156. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  157. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  158. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  159. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  160. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  161. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  162. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  163. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  164. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
  165. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  166. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  167. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  168. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  169. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  170. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  171. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  172. package/dist/core/ingestion/import-resolvers/php.js +65 -19
  173. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  174. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  175. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  176. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  177. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  178. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  179. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  180. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  181. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  182. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  183. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  184. package/dist/core/ingestion/language-config.d.ts +29 -1
  185. package/dist/core/ingestion/language-config.js +110 -35
  186. package/dist/core/ingestion/language-provider.d.ts +209 -7
  187. package/dist/core/ingestion/language-provider.js +37 -0
  188. package/dist/core/ingestion/languages/c/captures.js +7 -0
  189. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  190. package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
  191. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  192. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  193. package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
  194. package/dist/core/ingestion/languages/cobol.js +13 -0
  195. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  196. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  197. package/dist/core/ingestion/languages/cpp/captures.js +14 -2
  198. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  199. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  200. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  201. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  202. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  203. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  204. package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
  205. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  206. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  207. package/dist/core/ingestion/languages/csharp/captures.js +19 -0
  208. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  209. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  210. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  211. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  212. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  213. package/dist/core/ingestion/languages/dart/captures.js +598 -16
  214. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  215. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  216. package/dist/core/ingestion/languages/dart/index.js +1 -1
  217. package/dist/core/ingestion/languages/dart/query.js +98 -1
  218. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  219. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  220. package/dist/core/ingestion/languages/dart.js +6 -1
  221. package/dist/core/ingestion/languages/go/captures.js +108 -3
  222. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  223. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  224. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  225. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  226. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  227. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  228. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  229. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  230. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  231. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  232. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  233. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  234. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  235. package/dist/core/ingestion/languages/go/query.js +56 -3
  236. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  237. package/dist/core/ingestion/languages/go.js +9 -0
  238. package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
  239. package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
  240. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
  241. package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
  242. package/dist/core/ingestion/languages/java/captures.js +77 -32
  243. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  244. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  245. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  246. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  247. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  248. package/dist/core/ingestion/languages/java/query.js +15 -3
  249. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  250. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  251. package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
  252. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  253. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  254. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  255. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  256. package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
  257. package/dist/core/ingestion/languages/java/spring-di.js +41 -9
  258. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  259. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  260. package/dist/core/ingestion/languages/java.js +94 -3
  261. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  262. package/dist/core/ingestion/languages/javascript/captures.js +262 -4
  263. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  264. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  265. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  266. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  267. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  268. package/dist/core/ingestion/languages/javascript/query.js +211 -5
  269. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  270. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  271. package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
  272. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  273. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
  274. package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
  275. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  276. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  277. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  278. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  279. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  280. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  281. package/dist/core/ingestion/languages/kotlin/query.js +28 -2
  282. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
  283. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  284. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  285. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  286. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  287. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
  288. package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
  289. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  290. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  291. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  292. package/dist/core/ingestion/languages/php/captures.js +319 -51
  293. package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
  294. package/dist/core/ingestion/languages/php/import-target.js +192 -62
  295. package/dist/core/ingestion/languages/php/query.js +31 -0
  296. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  297. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  298. package/dist/core/ingestion/languages/python/captures.js +29 -0
  299. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  300. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  301. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  302. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  303. package/dist/core/ingestion/languages/python/index.js +1 -1
  304. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  305. package/dist/core/ingestion/languages/python/interpret.js +249 -7
  306. package/dist/core/ingestion/languages/python/query.js +9 -0
  307. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
  308. package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
  309. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  310. package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
  311. package/dist/core/ingestion/languages/python.js +13 -0
  312. package/dist/core/ingestion/languages/ruby/captures.js +158 -0
  313. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  314. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  315. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  316. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  317. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  318. package/dist/core/ingestion/languages/rust/captures.js +39 -1
  319. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  320. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  321. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  322. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  323. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  324. package/dist/core/ingestion/languages/rust/query.js +39 -6
  325. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  326. package/dist/core/ingestion/languages/rust.js +17 -0
  327. package/dist/core/ingestion/languages/swift/captures.js +87 -3
  328. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  329. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  330. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  331. package/dist/core/ingestion/languages/swift/query.js +17 -0
  332. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  333. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  334. package/dist/core/ingestion/languages/swift.js +2 -0
  335. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  336. package/dist/core/ingestion/languages/typescript/captures.js +267 -5
  337. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  338. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  339. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  340. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  341. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
  342. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
  343. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  344. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  345. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  346. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  347. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  348. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  349. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  350. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  351. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  352. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  353. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  354. package/dist/core/ingestion/languages/typescript/query.js +303 -14
  355. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  356. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  357. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  358. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  359. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  360. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  361. package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
  362. package/dist/core/ingestion/languages/typescript.js +93 -2
  363. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  364. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  365. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  366. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  367. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  368. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  369. package/dist/core/ingestion/method-types.d.ts +16 -0
  370. package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
  371. package/dist/core/ingestion/pipeline-phases/di.js +136 -21
  372. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  373. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  374. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  375. package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
  376. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  377. package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
  378. package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
  379. package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
  380. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  381. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  382. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  383. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  384. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  385. package/dist/core/ingestion/pipeline.d.ts +26 -2
  386. package/dist/core/ingestion/pipeline.js +60 -11
  387. package/dist/core/ingestion/process-processor.d.ts +109 -2
  388. package/dist/core/ingestion/process-processor.js +464 -52
  389. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  390. package/dist/core/ingestion/resolve-references.js +66 -6
  391. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
  392. package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
  393. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
  394. package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
  395. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  396. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  397. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
  398. package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
  399. package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
  400. package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
  401. package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
  402. package/dist/core/ingestion/route-extractors/nest.js +523 -0
  403. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  404. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  405. package/dist/core/ingestion/route-extractors/spring.js +214 -29
  406. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  407. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  408. package/dist/core/ingestion/scope-extractor.js +309 -15
  409. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
  410. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  411. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
  412. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
  413. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  414. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
  415. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  416. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  417. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
  418. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
  419. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  420. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
  421. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
  422. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
  423. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  424. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  425. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
  426. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
  427. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  428. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  429. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
  430. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
  431. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
  432. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  433. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  434. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  435. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  436. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  437. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
  438. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
  439. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
  440. package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
  441. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  442. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  443. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  444. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  445. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  446. package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
  447. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  448. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  449. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  450. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  451. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  452. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  453. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  454. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  455. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  456. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  457. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  458. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  459. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  460. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  461. package/dist/core/ingestion/tree-sitter-queries.js +678 -4
  462. package/dist/core/ingestion/type-env.js +11 -7
  463. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  464. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  465. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  466. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  467. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  468. package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
  469. package/dist/core/ingestion/utils/ast-helpers.js +578 -46
  470. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  471. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  472. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
  473. package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
  474. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  475. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  476. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  477. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  478. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  479. package/dist/core/ingestion/utils/line-base.js +14 -0
  480. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  481. package/dist/core/ingestion/utils/method-props.js +29 -4
  482. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  483. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  484. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  485. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  486. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  487. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  488. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  489. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  490. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  491. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  492. package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
  493. package/dist/core/ingestion/workers/callable-id.js +125 -0
  494. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  495. package/dist/core/ingestion/workers/parse-worker.js +493 -54
  496. package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
  497. package/dist/core/ingestion/workers/worker-pool.js +91 -3
  498. package/dist/core/lbug/csv-generator.d.ts +27 -0
  499. package/dist/core/lbug/csv-generator.js +72 -17
  500. package/dist/core/lbug/extension-load-error.js +13 -2
  501. package/dist/core/lbug/extension-loader.d.ts +29 -0
  502. package/dist/core/lbug/extension-loader.js +31 -6
  503. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  504. package/dist/core/lbug/graph-emit-sink.js +581 -0
  505. package/dist/core/lbug/lbug-adapter.d.ts +290 -11
  506. package/dist/core/lbug/lbug-adapter.js +652 -69
  507. package/dist/core/lbug/native-check.d.ts +21 -0
  508. package/dist/core/lbug/native-check.js +248 -32
  509. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  510. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  511. package/dist/core/lbug/pool-adapter.d.ts +9 -0
  512. package/dist/core/lbug/pool-adapter.js +164 -14
  513. package/dist/core/lbug/query-batch.d.ts +75 -0
  514. package/dist/core/lbug/query-batch.js +102 -0
  515. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  516. package/dist/core/lbug/rel-pair-routing.js +228 -10
  517. package/dist/core/lbug/schema.d.ts +163 -4
  518. package/dist/core/lbug/schema.js +404 -159
  519. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  520. package/dist/core/lbug/sync-csv-writer.js +108 -0
  521. package/dist/core/run-analyze.d.ts +147 -0
  522. package/dist/core/run-analyze.js +1215 -179
  523. package/dist/core/search/bm25-index.d.ts +11 -0
  524. package/dist/core/search/bm25-index.js +60 -26
  525. package/dist/core/search/fts-indexes.d.ts +150 -9
  526. package/dist/core/search/fts-indexes.js +241 -23
  527. package/dist/core/wiki/graph-queries.js +145 -112
  528. package/dist/core/wiki/llm-client.d.ts +29 -3
  529. package/dist/core/wiki/llm-client.js +47 -12
  530. package/dist/core/wiki/prompts.d.ts +19 -0
  531. package/dist/core/wiki/prompts.js +20 -1
  532. package/dist/lib/utils.d.ts +113 -0
  533. package/dist/lib/utils.js +185 -0
  534. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  535. package/dist/mcp/local/aop-metadata.js +227 -0
  536. package/dist/mcp/local/bean-metadata.d.ts +2 -1
  537. package/dist/mcp/local/bean-metadata.js +22 -1
  538. package/dist/mcp/local/convex-metadata.d.ts +8 -0
  539. package/dist/mcp/local/convex-metadata.js +45 -0
  540. package/dist/mcp/local/local-backend.d.ts +174 -11
  541. package/dist/mcp/local/local-backend.js +1678 -331
  542. package/dist/mcp/local/path-predicate.d.ts +19 -0
  543. package/dist/mcp/local/path-predicate.js +21 -0
  544. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  545. package/dist/mcp/local/pdg-impact.js +391 -98
  546. package/dist/mcp/repository-policy.d.ts +1 -0
  547. package/dist/mcp/repository-policy.js +5 -0
  548. package/dist/mcp/resources.js +26 -4
  549. package/dist/mcp/server.js +23 -13
  550. package/dist/mcp/tools.d.ts +8 -0
  551. package/dist/mcp/tools.js +76 -23
  552. package/dist/server/analyze-job.d.ts +37 -2
  553. package/dist/server/analyze-job.js +13 -2
  554. package/dist/server/analyze-launch.d.ts +1 -1
  555. package/dist/server/analyze-launch.js +79 -10
  556. package/dist/server/analyze-worker-core.d.ts +1 -1
  557. package/dist/server/analyze-worker-core.js +10 -1
  558. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  559. package/dist/server/analyze-worker-ipc.js +4 -0
  560. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  561. package/dist/server/analyze-worker-protocol.js +1 -0
  562. package/dist/server/analyze-worker.d.ts +1 -17
  563. package/dist/server/api.d.ts +2 -11
  564. package/dist/server/api.js +164 -163
  565. package/dist/server/embed-run-outcome.d.ts +89 -0
  566. package/dist/server/embed-run-outcome.js +88 -0
  567. package/dist/server/git-clone.js +6 -2
  568. package/dist/server/middleware.d.ts +116 -9
  569. package/dist/server/middleware.js +291 -22
  570. package/dist/server/sse-progress.d.ts +41 -0
  571. package/dist/server/sse-progress.js +125 -0
  572. package/dist/storage/branch-index.d.ts +11 -6
  573. package/dist/storage/branch-index.js +15 -7
  574. package/dist/storage/file-hash.js +2 -2
  575. package/dist/storage/fs-atomic.d.ts +25 -0
  576. package/dist/storage/fs-atomic.js +42 -0
  577. package/dist/storage/git.d.ts +131 -0
  578. package/dist/storage/git.js +236 -2
  579. package/dist/storage/index-lock.d.ts +102 -0
  580. package/dist/storage/index-lock.js +660 -0
  581. package/dist/storage/parse-cache.js +588 -6
  582. package/dist/storage/parsedfile-store.js +76 -6
  583. package/dist/storage/repo-manager.d.ts +54 -441
  584. package/dist/storage/repo-manager.js +312 -221
  585. package/dist/storage/repo-meta.d.ts +530 -0
  586. package/dist/storage/repo-meta.js +100 -0
  587. package/dist/types/pipeline.d.ts +37 -0
  588. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  589. package/hooks/claude/gitnexus-hook.cjs +1 -1
  590. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  591. package/package.json +11 -2
  592. package/scripts/cross-platform-shard.ts +153 -0
  593. package/scripts/cross-platform-tests.ts +122 -0
  594. package/scripts/run-cross-platform.ts +16 -5
  595. package/skills/gitnexus-cli.md +3 -3
  596. package/skills/gitnexus-debugging.md +37 -7
  597. package/skills/gitnexus-exploring.md +26 -4
  598. package/skills/gitnexus-impact-analysis.md +71 -10
  599. package/skills/gitnexus-plan/README.md +11 -6
  600. package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
  601. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
  602. package/skills/gitnexus-refactoring.md +48 -5
  603. package/skills/gitnexus-review/SKILL.md +12 -6
  604. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
  605. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
  606. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
  607. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
  608. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
  609. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
  610. package/skills/gitnexus-taint-analysis.md +13 -7
  611. package/skills/gitnexus-work/SKILL.md +4 -1
  612. package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
  613. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
  614. package/vendor/leiden/utils.cjs +28 -1
  615. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  616. package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
  617. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  618. package/web/assets/agent-Dr4l5EOp.js +662 -0
  619. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  620. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  621. package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
  622. package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
  623. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  624. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  625. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  626. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  627. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  628. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  629. package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
  630. package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
  631. package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
  632. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  633. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  634. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  635. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  636. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  637. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  638. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  639. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  640. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  641. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  642. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  643. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  644. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  645. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  646. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  647. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  648. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  649. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  650. package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
  651. package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
  652. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  653. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  654. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  655. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  656. package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
  657. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  658. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  659. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  660. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  661. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  662. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  663. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  664. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  665. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  666. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  667. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  668. package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
  669. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  670. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  671. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  672. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  673. package/web/assets/error-D9MtuG9s.js +1 -0
  674. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  675. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  676. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  677. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  678. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  679. package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
  680. package/web/assets/index-CJDpyH-n.css +2 -0
  681. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  682. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  683. package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
  684. package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
  685. package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
  686. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  687. package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
  688. package/web/assets/node.browser-U-KyT5AW.js +1 -0
  689. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  690. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  691. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  692. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  693. package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
  694. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  695. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  696. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  697. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  698. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  699. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  700. package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
  701. package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
  702. package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
  703. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  704. package/web/assets/src-C5sx_gMp.js +1 -0
  705. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  706. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  707. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  708. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  709. package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
  710. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  711. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  712. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  713. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  714. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  715. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  716. package/web/index.html +16 -15
  717. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  718. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  719. package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
  720. package/web/assets/agent-Ds-lkZjX.js +0 -626
  721. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  722. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
  723. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
  724. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  725. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  726. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  727. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
  728. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
  729. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  730. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  731. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  732. package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
  733. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  734. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  735. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
  736. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  737. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  738. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
  739. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  740. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  741. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
  742. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
  743. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
  744. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
  745. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
  746. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
  747. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
  748. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
  749. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
  750. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
  751. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  752. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
  753. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
  754. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  755. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
  756. package/web/assets/index-CX_fADmQ.css +0 -2
  757. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  758. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
  759. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  760. package/web/assets/node-Ct_zna8U.js +0 -8
  761. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  762. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  763. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
  764. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  765. package/web/assets/sdk-CzHHH8tD.js +0 -37
  766. package/web/assets/src-Cv1eWg0o.js +0 -1
  767. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
  768. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
  769. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  770. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  771. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
  772. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  773. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
  774. package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
  775. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -18,7 +18,9 @@
18
18
  * inferred from leading JSDoc comments. A lightweight regex scanner
19
19
  * (`parseJsDocParams` / `parseJsDocReturn`) extracts `@param {T} n`
20
20
  * and `@returns {T}` tags and emits synthetic captures positioned on
21
- * the annotated function node.
21
+ * the annotated function node. `@type {T}` on a class FIELD is the same
22
+ * story one level down — it is the only way JavaScript can declare a
23
+ * field's type at all — and emits `@type-binding.class-field` (#2833).
22
24
  *
23
25
  * 4. **Shared synthesis passes** — destructuring, for-of map-tuple, and
24
26
  * instanceof narrowing passes are duplicated from `typescript/captures.ts`
@@ -32,19 +34,58 @@ import { getJsParser, getJsScopeQuery, jsCachedTreeMatchesGrammar } from './quer
32
34
  import { computeTsArityMetadata } from '../typescript/arity-metadata.js';
33
35
  import { synthesizeTsReceiverBinding } from '../typescript/receiver-binding.js';
34
36
  import { isArrayMethodCallbackArrow } from '../typescript/array-callback.js';
37
+ import { isStaticClassFieldBinding } from '../typescript/captures.js';
38
+ import { reducesToContainedType } from '../typescript/interpret.js';
39
+ /** JavaScript's spelling of a class-field declaration — the TypeScript grammar
40
+ * calls the same construct `public_field_definition`. Named here, not in the
41
+ * shared predicate, so each literal is checked against the grammar of the file
42
+ * it lives in (`grammar-literal-validation`). */
43
+ const JS_CLASS_FIELD_DEFINITION_TYPES = new Set(['field_definition']);
44
+ import { hasKeyword } from '../../field-extractors/configs/helpers.js';
45
+ import { synthesizeCjsModuleExports } from '../typescript/cjs-module-exports.js';
46
+ import { isShadowedCjsExportAssignment, isUnexportedMemberAssignmentValue, isUndeclarableThisMemberValue, } from '../typescript/cjs-export-assignment.js';
35
47
  import { getTreeSitterBufferSize } from '../../constants.js';
36
48
  import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
37
49
  import { synthesizeCallableFlowCaptures } from '../../utils/callable-flow-captures.js';
50
+ import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
38
51
  import { deriveDefaultExportHocName, isBlockedDefaultExportHoc, isDefaultExportHocFunctionNode, } from '../../ts-js-hoc-utils.js';
39
52
  /** JS function-like node types that may carry a synthesized `this` binding.
40
53
  * Kept in sync with the `@scope.function` patterns in `query.ts`. */
41
- const FUNCTION_NODE_TYPES = [
54
+ export const FUNCTION_NODE_TYPES = [
42
55
  'method_definition',
43
56
  'arrow_function',
44
57
  'function_expression',
45
58
  'function_declaration',
46
59
  'generator_function_declaration',
60
+ // The EXPRESSION form (`const g = function* () {}`) — see the matching note
61
+ // in `typescript/captures.ts`.
62
+ 'generator_function',
47
63
  ];
64
+ /** Nodes whose `statement_block` child is their BODY, not a nested block. */
65
+ const JS_FUNCTION_BODY_OWNER_TYPES = new Set(FUNCTION_NODE_TYPES);
66
+ /** Direct-child node types that create a BINDING in their enclosing block.
67
+ * `variable_declaration` (`var`) is deliberately absent: it hoists past the
68
+ * block to the function, so a block containing only `var` binds nothing. */
69
+ const BLOCK_BINDING_CHILD_TYPES = new Set([
70
+ 'lexical_declaration',
71
+ 'class_declaration',
72
+ 'function_declaration',
73
+ 'generator_function_declaration',
74
+ ]);
75
+ /** True when `block` directly declares a name, i.e. it is a real environment
76
+ * record rather than punctuation. A block that binds nothing is transparent to
77
+ * every scope-chain walk — a lookup finds nothing in it and continues to the
78
+ * parent — so emitting a scope for it costs tree size and walk depth and buys
79
+ * exactly nothing. Only DIRECT children count: a declaration in a nested block
80
+ * belongs to that block, which gets its own scope by the same rule. */
81
+ const blockDeclaresBinding = (block) => {
82
+ for (let i = 0; i < block.namedChildCount; i++) {
83
+ const child = block.namedChild(i);
84
+ if (child !== null && BLOCK_BINDING_CHILD_TYPES.has(child.type))
85
+ return true;
86
+ }
87
+ return false;
88
+ };
48
89
  /** Declaration anchors that carry function-like arity metadata. */
49
90
  const FUNCTION_DECL_TAGS = ['@declaration.method', '@declaration.function'];
50
91
  /** Callsite anchors that should carry `@reference.arity` + param types. */
@@ -294,9 +335,133 @@ function parseJsDocType(text) {
294
335
  const m = /@type\s+\{([^}]+)\}/.exec(text);
295
336
  return m ? m[1].trim() : null;
296
337
  }
338
+ /**
339
+ * A type REFERENCE, possibly qualified, generic, or unioned:
340
+ * `Repo`, `Repo<User>`, `models.Repo`, `Handler<Req, Res>`, `Repo|null`,
341
+ * `Repo<User> | null`.
342
+ *
343
+ * Applied only to a string already capped by {@link JSDOC_TYPE_MAX_LENGTH}:
344
+ * the union and generic groups both nest quantifiers, so an unbounded
345
+ * non-matching input is a backtracking hazard, and a docblock's `{…}` payload
346
+ * is attacker-shaped text (it is whatever the file says).
347
+ *
348
+ * JSDoc's `{…}` payload is free text and carries shapes that are not
349
+ * references at all — record types (`{{a: number}}`), function types
350
+ * (`{function(string): void}`), the any-type `{*}`, parenthesized unions
351
+ * (`{(Repo|Other)}`). None of those name a class, so a field annotated with
352
+ * one is DECLINED rather than bound to whatever substring survives
353
+ * normalization. (`parseJsDocType`'s `[^}]+` also truncates a record type at
354
+ * its first `}`, which this rejects too.)
355
+ */
356
+ /** Longest `@type {…}` payload considered. A type REFERENCE that names a class
357
+ * is far shorter; past this the string is a structural type or generated
358
+ * noise, which this pass declines anyway, and the cap is what keeps
359
+ * {@link JSDOC_TYPE_REFERENCE_RE}'s nested quantifiers off an unbounded
360
+ * input. */
361
+ const JSDOC_TYPE_MAX_LENGTH = 200;
362
+ const JSDOC_TYPE_REFERENCE_RE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*(?:\s*<[\w$.,<>\s]*>)?(?:\s*\|\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*(?:\s*<[\w$.,<>\s]*>)?)*$/;
363
+ /**
364
+ * The spelling a JSDoc `@type` should bind a class FIELD to, or `null` to
365
+ * decline.
366
+ *
367
+ * The as-written spelling is returned, NOT a reduced one: `interpretJsTypeBinding`
368
+ * carries `Repo<User>` through to `TypeRef.rawName` untouched (user generics are
369
+ * not on `stripGeneric`'s wrapper list), and `resolveClassBindingForName` erases
370
+ * the arguments to `Repo` at lookup time. That is the same erasure every other
371
+ * language in #2833 relies on, so generics need no code here — verified, not
372
+ * assumed, by the capture probe in that issue.
373
+ *
374
+ * Two declines:
375
+ * - `reducesToContainedType` — the container spellings whose interpretation
376
+ * would yield the ELEMENT (`Repo[]`, `Array<Repo>`, `Promise<Repo>`). See
377
+ * that predicate for why a field must not take its element's type.
378
+ * - anything that is not a type reference (see JSDOC_TYPE_REFERENCE_RE).
379
+ *
380
+ * The leading `?` / `!` nullability sigils are JSDoc-specific decoration with no
381
+ * bearing on which class is named, so they are peeled first — `{?Repo}` binds
382
+ * `Repo` exactly as `{Repo|null}` does.
383
+ */
384
+ function jsDocFieldTypeSpelling(rawType) {
385
+ const spelling = rawType
386
+ .trim()
387
+ .replace(/^[?!]+/, '')
388
+ .trim();
389
+ if (spelling === '' || spelling.length > JSDOC_TYPE_MAX_LENGTH)
390
+ return null;
391
+ if (reducesToContainedType(spelling))
392
+ return null;
393
+ if (!JSDOC_TYPE_REFERENCE_RE.test(spelling))
394
+ return null;
395
+ return spelling;
396
+ }
397
+ /**
398
+ * The identifier a JSDoc `@type` may bind a `field_definition` to, or `null` if
399
+ * this field takes no docblock binding at all (#2833).
400
+ *
401
+ * Two refusals, and both are cheaper to answer than the docblock search they
402
+ * gate, which is why they run before it:
403
+ *
404
+ * - `static` fields are dropped, exactly as the query-driven annotation path
405
+ * drops them in `emitJsScopeCaptures` — a static member belongs to the class
406
+ * object and would silently RETYPE an instance field of the same name. The
407
+ * full cost of that trade, measured, is in `isStaticClassFieldBinding`
408
+ * (#2807). Re-checked here because the synthesis pass runs outside the
409
+ * match loop that applies it.
410
+ * - a name that is not a plain identifier (a computed key, a string key)
411
+ * names nothing `this.x` could look up.
412
+ *
413
+ * The JavaScript grammar names a field's name `property:`, not `name:`. `#priv`
414
+ * arrives as `private_property_identifier`; TypeScript binds those under their
415
+ * `#`-prefixed spelling, which is how `this.#priv` looks it up.
416
+ */
417
+ function jsDocBindableFieldName(node) {
418
+ if (isStaticClassFieldBinding(node, JS_CLASS_FIELD_DEFINITION_TYPES))
419
+ return null;
420
+ const nameNode = node.childForFieldName('property');
421
+ if (nameNode === null ||
422
+ (nameNode.type !== 'property_identifier' && nameNode.type !== 'private_property_identifier')) {
423
+ return null;
424
+ }
425
+ return nameNode;
426
+ }
427
+ /**
428
+ * Emit the class-FIELD type binding a JSDoc `@type {T}` block declares (#2833).
429
+ *
430
+ * JavaScript has no type annotations, so a docblock is the only way a field
431
+ * can declare one — and measured before this branch, `/** @type {Repo<User>} *​/
432
+ * repo;` bound NOTHING, taking down the non-generic control (`{Plain}`) with
433
+ * it. TypeScript's equivalent `repo: Repo<User>` has always bound, via the
434
+ * `@type-binding.annotation` rule on `public_field_definition`; this reaches the
435
+ * same DESTINATION from the docblock — an annotation-strength binding on the
436
+ * enclosing Class scope, which is the only place `typeOfMemberOnClass` reads a
437
+ * field's type — so the compound-receiver resolver finds it the way it always
438
+ * has. No resolution-side change. See the tag note on the emit below for why
439
+ * the marker is `class-field` rather than `annotation`.
440
+ */
441
+ function emitJsDocFieldBinding(docComment, nameNode, out) {
442
+ const rawType = parseJsDocType(docComment);
443
+ const spelling = rawType === null ? null : jsDocFieldTypeSpelling(rawType);
444
+ if (spelling === null)
445
+ return;
446
+ out.push({
447
+ '@type-binding.name': syntheticCapture('@type-binding.name', nameNode, nameNode.text),
448
+ '@type-binding.type': syntheticCapture('@type-binding.type', nameNode, spelling),
449
+ // `class-field`, not `annotation`: this is the JS provider's own
450
+ // marker for a binding that must be HOISTED to the enclosing Class
451
+ // scope, which is where `typeOfMemberOnClass` reads a field's type.
452
+ // `jsBindingScopeFor` does that walk; `interpretJsTypeBinding` then
453
+ // remaps the tag to `annotation` so the source strength is the same
454
+ // as TypeScript's `repo: Repo<User>`. Measured: with `annotation`
455
+ // the binding lands on the innermost scope and the field never
456
+ // types — the same shape `synthesizeConstructorFieldBindings` needs
457
+ // for `this.p = new Outer()`.
458
+ '@type-binding.class-field': syntheticCapture('@type-binding.class-field', nameNode, '1'),
459
+ });
460
+ }
297
461
  /**
298
462
  * Walk the AST and synthesize `@type-binding.*` captures from JSDoc
299
- * comments immediately preceding function declarations / expressions.
463
+ * comments immediately preceding function declarations / expressions and class
464
+ * field definitions.
300
465
  *
301
466
  * Only `/** … *​/` block comments are scanned. Line comments (`//`) are
302
467
  * intentionally excluded — JSDoc lives in block comments.
@@ -307,10 +472,23 @@ function parseJsDocType(text) {
307
472
  * - `@type-binding.annotation` for `@type {T}` on `let`/`const`/`var`
308
473
  * declarations — covers the common `/** @type {User} *​/ const u = …`
309
474
  * pattern (ECMA-262 §14.3.1/§14.3.2 variable declarations).
475
+ * - `@type-binding.class-field` for `@type {T}` on a `field_definition`
476
+ * (#2833) — see {@link emitJsDocFieldBinding}.
310
477
  *
311
478
  * The binding is anchored on the function node so `tsBindingScopeFor`
312
479
  * can hoist method return-type bindings to Module scope (matching the
313
480
  * TypeScript path where `hoistTypeBindingsToModule: true`).
481
+ *
482
+ * `field_definition` is a node kind of THIS walk rather than a pass of its own,
483
+ * even though a field's anchor and name are the field itself while every other
484
+ * branch keys off a function-like anchor. A separate pass would be a ninth
485
+ * full-tree traversal of `emitJsScopeCaptures`, and measured on
486
+ * `dist/core/ingestion/workers/parse-worker.js` (2.4k lines, 17.3k nodes) one
487
+ * `namedChildren` walk costs 14.3 ms against 7.5 ms to PARSE the whole file —
488
+ * `node.namedChildren` materializes a fresh array of node wrappers across the
489
+ * N-API boundary at every node. The two node kinds share this walk's preceding-
490
+ * comment search and nothing else, so the branch below returns as soon as it
491
+ * has emitted.
314
492
  */
315
493
  function synthesizeJsDocBindings(root, out) {
316
494
  const stack = [root];
@@ -326,7 +504,14 @@ function synthesizeJsDocBindings(root, out) {
326
504
  const isMethodDef = node.type === 'method_definition';
327
505
  // Also check lexical_declaration containing an arrow/fn-expression
328
506
  const isLexDecl = node.type === 'lexical_declaration' || node.type === 'variable_declaration';
329
- if (!isFnDecl && !isMethodDef && !isLexDecl)
507
+ const isFieldDef = node.type === 'field_definition';
508
+ if (!isFnDecl && !isMethodDef && !isLexDecl && !isFieldDef)
509
+ continue;
510
+ // Non-null exactly for a field that can carry a binding, so it doubles as
511
+ // the branch selector inside the comment search below. Answered before that
512
+ // search because an unbindable field has no reason to look for a docblock.
513
+ const fieldNameNode = isFieldDef ? jsDocBindableFieldName(node) : null;
514
+ if (isFieldDef && fieldNameNode === null)
330
515
  continue;
331
516
  // For `export function foo() { ... }`, the JSDoc comment precedes the
332
517
  // wrapping export_statement, not the inner function_declaration.
@@ -337,6 +522,13 @@ function synthesizeJsDocBindings(root, out) {
337
522
  while (sibling !== null && sibling.type === 'comment') {
338
523
  const text = sibling.text;
339
524
  if (text.startsWith('/**')) {
525
+ // A field's docblock declares its own type and nothing else — `@param` /
526
+ // `@returns` on a field name no callable — so this branch does not fall
527
+ // through to the function-like tags below.
528
+ if (fieldNameNode !== null) {
529
+ emitJsDocFieldBinding(text, fieldNameNode, out);
530
+ break;
531
+ }
340
532
  // Found a JSDoc block.
341
533
  const params = parseJsDocParams(text);
342
534
  const retType = parseJsDocReturn(text);
@@ -556,9 +748,26 @@ function synthesizeConstructorFieldBindings(root, out) {
556
748
  // Only process constructor method definitions
557
749
  if (node.type !== 'method_definition')
558
750
  continue;
751
+ // …and only a CLASS's. An object literal's members are `method_definition`
752
+ // too, so `{ constructor() { this.p = new Alien(); } }` reached here and
753
+ // typed a field on whatever class the hoist walked up to — an object
754
+ // literal's `this` is the literal, never that class's instance (#2807).
755
+ // TypeScript's sibling pattern carries the same constraint in its query
756
+ // nesting; the two must not read one source differently.
757
+ if (node.parent?.type !== 'class_body')
758
+ continue;
559
759
  const nameNode = node.childForFieldName('name');
560
760
  if (nameNode?.text !== 'constructor')
561
761
  continue;
762
+ // `static constructor() {}` is legal JavaScript — the reserved-name rule
763
+ // applies to instance methods only — and its `this` is the CLASS object, so
764
+ // `this.p = new Alien()` there writes a static property and must not type
765
+ // the instance field `p`. TypeScript's sibling guard (`isStaticMethodThis`)
766
+ // already drops this shape; without the same test here `.js` and `.ts` read
767
+ // one source differently. `hasKeyword` skips the `name` field, so a method
768
+ // named `static` cannot false-positive.
769
+ if (hasKeyword(node, 'static'))
770
+ continue;
562
771
  const body = node.childForFieldName('body');
563
772
  if (body === null)
564
773
  continue;
@@ -759,6 +968,18 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
759
968
  continue;
760
969
  }
761
970
  // Filter @reference.read.member false-positives.
971
+ // See the matching filter in typescript/captures.ts: a `statement_block`
972
+ // that IS a function body duplicates the enclosing Function scope, and
973
+ // keeping it puts a redundant level inside every function for every
974
+ // scope-chain walk to step through (~6% of analyze wall time, measured).
975
+ if (grouped['@scope.block'] !== undefined) {
976
+ const blockNode = groupedNodes['@scope.block'];
977
+ const parentType = blockNode?.parent?.type;
978
+ if (parentType !== undefined && JS_FUNCTION_BODY_OWNER_TYPES.has(parentType))
979
+ continue;
980
+ if (blockNode === undefined || !blockDeclaresBinding(blockNode))
981
+ continue;
982
+ }
762
983
  if (grouped['@reference.read.member'] !== undefined) {
763
984
  const anchor = grouped['@reference.read.member'];
764
985
  const memberNode = findSelfOrAncestorOfType(groupedNodes['@reference.read.member'], 'member_expression') ??
@@ -767,6 +988,18 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
767
988
  continue;
768
989
  }
769
990
  }
991
+ // A `static` class field is a member of the class object, not of instances,
992
+ // so `static p = new Wrong()` must not retype the `p = new Right()` beside
993
+ // it — the two land on one Class scope and the later match wins the `>=`
994
+ // tie-break. Shared with TypeScript (`isStaticClassFieldBinding`), which is
995
+ // where the reasoning and the grammar evidence live; the two languages read
996
+ // the same source and must not read it differently. JavaScript has no type
997
+ // annotations, so `field_definition` initializers are the only class-field
998
+ // type binding its query emits and `@type-binding.constructor` is the only
999
+ // anchor that can carry the modifier.
1000
+ if (isStaticClassFieldBinding(groupedNodes['@type-binding.constructor'], JS_CLASS_FIELD_DEFINITION_TYPES)) {
1001
+ continue;
1002
+ }
770
1003
  // #1876: drop @declaration.function for array higher-order-method
771
1004
  // callbacks (`const x = arr.map(a => …)`). The HOC-wrapped-arrow
772
1005
  // pattern matches them, but the binding holds a value, not a callable.
@@ -783,6 +1016,24 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
783
1016
  if (arrowNode !== null && isBlockedDefaultExportHoc(arrowNode)) {
784
1017
  continue;
785
1018
  }
1019
+ // #2723 — see the matching filter in `typescript/captures.ts`.
1020
+ if (arrowNode !== null && isShadowedCjsExportAssignment(arrowNode, tree.rootNode)) {
1021
+ continue;
1022
+ }
1023
+ // #2723 follow-up: the member-assignment rule matches ANY identifier
1024
+ // receiver so an `exports` alias can be recognised. A receiver that is
1025
+ // not the exports object declares nothing at module scope — drop it, or
1026
+ // every `obj.handler = fn` would bind `handler` as a module symbol.
1027
+ if (arrowNode !== null && isUnexportedMemberAssignmentValue(arrowNode, tree.rootNode)) {
1028
+ continue;
1029
+ }
1030
+ // A `this.X = fn` declares a module symbol ONLY at the top level of a
1031
+ // CommonJS file, where `this` is `module.exports`. Inside a function it
1032
+ // is an instance member (a Method with an owner, no module binding), and
1033
+ // in ESM top-level `this` is undefined and exports nothing.
1034
+ if (arrowNode !== null && isUndeclarableThisMemberValue(arrowNode, tree.rootNode)) {
1035
+ continue;
1036
+ }
786
1037
  }
787
1038
  if (fnDeclAnchor !== undefined) {
788
1039
  const fnNode = findFunctionNode(tree.rootNode, fnDeclAnchor.range, groupedNodes['@declaration.function']);
@@ -835,6 +1086,12 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
835
1086
  grouped['@reference.parameter-types'] = syntheticCapture('@reference.parameter-types', callNode, JSON.stringify(args.map(inferArgType)));
836
1087
  }
837
1088
  }
1089
+ // Structural receiver chain for a call whose receiver is itself an
1090
+ // expression, so resolution can type it by folding over structure
1091
+ // instead of re-parsing the receiver's source text. Self-gating: a
1092
+ // non-call match, an absent receiver, or a chain with no nameable base
1093
+ // all leave `grouped` untouched.
1094
+ synthesizeReceiverChainCapture(grouped, groupedNodes['@reference.receiver']);
838
1095
  out.push(grouped);
839
1096
  // Synthesize `this` receiver type-bindings on class member functions.
840
1097
  const scopeFnAnchor = grouped['@scope.function'];
@@ -849,6 +1106,7 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
849
1106
  }
850
1107
  // Post-query synthesis passes.
851
1108
  synthesizeCjsImports(tree.rootNode, out);
1109
+ synthesizeCjsModuleExports(tree.rootNode, filePath, out);
852
1110
  synthesizeJsDocBindings(tree.rootNode, out);
853
1111
  synthesizeConstructorFieldBindings(tree.rootNode, out);
854
1112
  synthesizeDestructuringBindings(tree.rootNode, out);
@@ -1,29 +1,25 @@
1
1
  /**
2
2
  * Import-target resolver for JavaScript.
3
3
  *
4
- * Delegates to the TypeScript `resolveTsTarget` standard-strategy resolver
5
- * with `language: SupportedLanguages.JavaScript` so the resolver tries
6
- * `.js` / `.jsx` extensions in addition to (or instead of) `.ts` / `.tsx`.
4
+ * Delegates to the TypeScript resolver, which is correct rather than merely
5
+ * convenient: `jsconfig.json` is a tsconfig by another name, `package.json`
6
+ * governs both languages identically, and Node's algorithm does not branch on
7
+ * which of the two wrote the file. The extension list already carries the JS
8
+ * family, so a `.js`/`.jsx`/`.mjs`/`.cjs` source resolves the same way.
7
9
  *
8
- * The `TsResolveContext.language` flag already exists in `import-target.ts`
9
- * and the resolver (`resolveImportPath`) already branches on it — this
10
- * adapter just wires the right value in.
10
+ * CJS `require()` calls reference the same module-path strings as ESM `import`
11
+ * statements, so the resolver handles them uniformly with no CJS-specific
12
+ * logic here.
11
13
  *
12
- * CJS `require()` calls reference the same module-path strings as ESM
13
- * `import` statements, so the resolver handles them uniformly without any
14
- * CJS-specific logic here.
14
+ * ## What #2953 removed
15
15
  *
16
- * No `tsconfig.json` path-alias support (JavaScript projects don't use
17
- * `tsconfig.json` compilerOptions.paths in general). Projects that DO use
18
- * tsconfig-based aliases alongside JavaScript can still resolve via the
19
- * standard extension-suffix fallback; the alias branch is a no-op when
20
- * `tsconfigPaths` is null.
21
- */
22
- import { type TsResolveContext } from '../typescript/import-target.js';
23
- export type JsResolveContext = TsResolveContext;
24
- /**
25
- * Build a memoized `resolveImportTarget` adapter for JavaScript.
26
- * Caches the derived arrays and per-pass resolve cache across
27
- * `resolveImportTarget` calls within a single workspace pass.
16
+ * This adapter used to reach `resolveImportPath`, whose last step was
17
+ * `suffixResolve` — a search for any repo file whose path ends in the
18
+ * specifier, retried with each leading segment dropped. The header this
19
+ * replaces recorded the symptom without naming it a defect: `import 'app/main'`
20
+ * resolving to `node_modules/dep/lib/main.js`, "the first `/main.js` in file
21
+ * order". A bare specifier now resolves only through a declared tsconfig
22
+ * mapping or a package manifest, and otherwise not at all.
28
23
  */
24
+ /** Build the JavaScript `resolveImportTarget` adapter. */
29
25
  export declare function makeJsResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
@@ -1,53 +1,36 @@
1
1
  /**
2
2
  * Import-target resolver for JavaScript.
3
3
  *
4
- * Delegates to the TypeScript `resolveTsTarget` standard-strategy resolver
5
- * with `language: SupportedLanguages.JavaScript` so the resolver tries
6
- * `.js` / `.jsx` extensions in addition to (or instead of) `.ts` / `.tsx`.
4
+ * Delegates to the TypeScript resolver, which is correct rather than merely
5
+ * convenient: `jsconfig.json` is a tsconfig by another name, `package.json`
6
+ * governs both languages identically, and Node's algorithm does not branch on
7
+ * which of the two wrote the file. The extension list already carries the JS
8
+ * family, so a `.js`/`.jsx`/`.mjs`/`.cjs` source resolves the same way.
7
9
  *
8
- * The `TsResolveContext.language` flag already exists in `import-target.ts`
9
- * and the resolver (`resolveImportPath`) already branches on it — this
10
- * adapter just wires the right value in.
10
+ * CJS `require()` calls reference the same module-path strings as ESM `import`
11
+ * statements, so the resolver handles them uniformly with no CJS-specific
12
+ * logic here.
11
13
  *
12
- * CJS `require()` calls reference the same module-path strings as ESM
13
- * `import` statements, so the resolver handles them uniformly without any
14
- * CJS-specific logic here.
14
+ * ## What #2953 removed
15
15
  *
16
- * No `tsconfig.json` path-alias support (JavaScript projects don't use
17
- * `tsconfig.json` compilerOptions.paths in general). Projects that DO use
18
- * tsconfig-based aliases alongside JavaScript can still resolve via the
19
- * standard extension-suffix fallback; the alias branch is a no-op when
20
- * `tsconfigPaths` is null.
16
+ * This adapter used to reach `resolveImportPath`, whose last step was
17
+ * `suffixResolve` — a search for any repo file whose path ends in the
18
+ * specifier, retried with each leading segment dropped. The header this
19
+ * replaces recorded the symptom without naming it a defect: `import 'app/main'`
20
+ * resolving to `node_modules/dep/lib/main.js`, "the first `/main.js` in file
21
+ * order". A bare specifier now resolves only through a declared tsconfig
22
+ * mapping or a package manifest, and otherwise not at all.
21
23
  */
22
- import { SupportedLanguages } from '../../../../_shared/index.js';
23
24
  import { resolveTsTarget } from '../typescript/import-target.js';
24
- /**
25
- * Build a memoized `resolveImportTarget` adapter for JavaScript.
26
- * Caches the derived arrays and per-pass resolve cache across
27
- * `resolveImportTarget` calls within a single workspace pass.
28
- */
25
+ /** Build the JavaScript `resolveImportTarget` adapter. */
29
26
  export function makeJsResolveImportTarget() {
30
- let cached = null;
31
- return (targetRaw, fromFile, allFilePaths) => {
32
- if (cached === null || cached.key !== allFilePaths) {
33
- const allFileList = Array.from(allFilePaths);
34
- cached = {
35
- key: allFilePaths,
36
- allFilePaths: new Set(allFilePaths),
37
- allFileList,
38
- normalizedFileList: allFileList.map((f) => f.toLowerCase()),
39
- resolveCache: new Map(),
40
- };
41
- }
42
- const ws = {
27
+ return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
28
+ const cfg = resolutionConfig;
29
+ return resolveTsTarget(targetRaw, {
43
30
  fromFile,
44
- language: SupportedLanguages.JavaScript,
45
- allFilePaths: cached.allFilePaths,
46
- allFileList: cached.allFileList,
47
- normalizedFileList: cached.normalizedFileList,
48
- resolveCache: cached.resolveCache,
49
- tsconfigPaths: null,
50
- };
51
- return resolveTsTarget(targetRaw, ws);
31
+ allFilePaths,
32
+ tsconfigs: cfg?.tsconfigs ?? null,
33
+ nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
34
+ });
52
35
  };
53
36
  }
@@ -34,11 +34,60 @@
34
34
  * resolved.
35
35
  * 3. **Dynamic require** — `require(computedPath)` is skipped (non-literal
36
36
  * argument — cannot statically resolve the target).
37
- * 4. **`module.exports` / `exports.X`** — CJS export forms are not yet
38
- * modeled as re-exports. The finalize algorithm treats the exporting
39
- * module as a namespace; importers that do `const X = require('./m')`
40
- * bind the module namespace, and member-call resolution walks the
41
- * class graph from there.
37
+ * 4. **CommonJS `require()` in TypeScript** — `require()` decomposition is a
38
+ * JavaScript-emitter concern, so a `.ts` file's `const m = require('./m')`
39
+ * is not decomposed into an import. The EXPORT side of a `.ts` CommonJS
40
+ * module is now declared (shared with the JS emitter), but an importer
41
+ * written in TypeScript still cannot resolve through it.
42
+ * 5. **`.cjs` module-level `this`** — the CommonJS/ESM gate consults the file
43
+ * extension where it can, but `provider.labelOverride` receives no file
44
+ * path, so a `.cjs` file whose only export is a module-level `this.X = fn`
45
+ * is not labelled. It now emits nothing rather than an ownerless `Method`.
46
+ * 6. **Calling a renamed default-export binding** — `module.exports = fn` IS
47
+ * indexed (#2723, named after the file), but resolving a CALL through a
48
+ * renamed local binding (`const renamed = require('./mod'); renamed()`)
49
+ * needs the finalize layer to treat a called namespace binding as the
50
+ * target module's default export. `const mod = require('./mod'); mod()`
51
+ * happens to resolve because the names coincide.
52
+ * 7. **Anonymous ESM default** — `export default function () {}` (no name)
53
+ * is not indexed either. Same class as the CJS default above, different
54
+ * construct; not addressed by #2723.
55
+ *
56
+ * ## CommonJS export forms (#2723)
57
+ *
58
+ * Each of these declares its name in the module scope, so importers resolve to
59
+ * it by name — `const { foo } = require('./m')` matches directly and a
60
+ * namespace `m.foo()` walks the module's defs:
61
+ *
62
+ * - `exports.foo = function () {}` / `module.exports.foo = (a) => a`, in
63
+ * every value form (function, async, arrow, async arrow, generator).
64
+ * - `const e = exports; e.foo = fn` — an alias bound at module scope. The
65
+ * receiver cannot be pinned in a query, so the member-assignment rules
66
+ * match any identifier receiver and the emitters prune anything that is
67
+ * not the exports object.
68
+ * - `this.foo = fn` at MODULE level of a CommonJS file, where `this` is
69
+ * `module.exports`. Gated on the file being CommonJS — in ESM top-level
70
+ * `this` is undefined and the same line exports nothing.
71
+ * - `exports.foo = lib.imported` / `exports.foo = importedName` — forwarded
72
+ * as a re-export (`reexport-alias`), so callers reach the ORIGINAL
73
+ * definition. A plain import binding would not do: it is private to its
74
+ * module, exactly as in ESM.
75
+ * - `module.exports = fn` — the whole module is the callable, so it is named
76
+ * after the file (`index.js` takes its parent directory). A named function
77
+ * expression keeps its own name. `exports = fn` is NOT indexed: rebinding
78
+ * `exports` exports nothing in CommonJS, it only breaks the alias.
79
+ *
80
+ * Two deliberate non-cases. `exports.foo = localFn`, where the value is a
81
+ * locally declared function, needs nothing — the module scope already binds
82
+ * `localFn` and importers already resolve through it. And a CJS export whose
83
+ * name the module ALSO declares lexically is suppressed rather than declared
84
+ * twice: two declarations of one name are ambiguous, and the resolver would
85
+ * drop the intra-module edge entirely.
86
+ *
87
+ * Callable members assigned through a receiver are Methods with an owner edge
88
+ * rather than free functions: `Foo.prototype.bar = fn` and `this.bar = fn`
89
+ * inside a constructor. Ownership resolves to what the file declares, so an
90
+ * owner it cannot see (`External.prototype.x = fn`) claims no edge.
42
91
  */
43
92
  export { emitJsScopeCaptures } from './captures.js';
44
93
  export { interpretJsImport, interpretJsTypeBinding } from './interpret.js';
@@ -34,11 +34,60 @@
34
34
  * resolved.
35
35
  * 3. **Dynamic require** — `require(computedPath)` is skipped (non-literal
36
36
  * argument — cannot statically resolve the target).
37
- * 4. **`module.exports` / `exports.X`** — CJS export forms are not yet
38
- * modeled as re-exports. The finalize algorithm treats the exporting
39
- * module as a namespace; importers that do `const X = require('./m')`
40
- * bind the module namespace, and member-call resolution walks the
41
- * class graph from there.
37
+ * 4. **CommonJS `require()` in TypeScript** — `require()` decomposition is a
38
+ * JavaScript-emitter concern, so a `.ts` file's `const m = require('./m')`
39
+ * is not decomposed into an import. The EXPORT side of a `.ts` CommonJS
40
+ * module is now declared (shared with the JS emitter), but an importer
41
+ * written in TypeScript still cannot resolve through it.
42
+ * 5. **`.cjs` module-level `this`** — the CommonJS/ESM gate consults the file
43
+ * extension where it can, but `provider.labelOverride` receives no file
44
+ * path, so a `.cjs` file whose only export is a module-level `this.X = fn`
45
+ * is not labelled. It now emits nothing rather than an ownerless `Method`.
46
+ * 6. **Calling a renamed default-export binding** — `module.exports = fn` IS
47
+ * indexed (#2723, named after the file), but resolving a CALL through a
48
+ * renamed local binding (`const renamed = require('./mod'); renamed()`)
49
+ * needs the finalize layer to treat a called namespace binding as the
50
+ * target module's default export. `const mod = require('./mod'); mod()`
51
+ * happens to resolve because the names coincide.
52
+ * 7. **Anonymous ESM default** — `export default function () {}` (no name)
53
+ * is not indexed either. Same class as the CJS default above, different
54
+ * construct; not addressed by #2723.
55
+ *
56
+ * ## CommonJS export forms (#2723)
57
+ *
58
+ * Each of these declares its name in the module scope, so importers resolve to
59
+ * it by name — `const { foo } = require('./m')` matches directly and a
60
+ * namespace `m.foo()` walks the module's defs:
61
+ *
62
+ * - `exports.foo = function () {}` / `module.exports.foo = (a) => a`, in
63
+ * every value form (function, async, arrow, async arrow, generator).
64
+ * - `const e = exports; e.foo = fn` — an alias bound at module scope. The
65
+ * receiver cannot be pinned in a query, so the member-assignment rules
66
+ * match any identifier receiver and the emitters prune anything that is
67
+ * not the exports object.
68
+ * - `this.foo = fn` at MODULE level of a CommonJS file, where `this` is
69
+ * `module.exports`. Gated on the file being CommonJS — in ESM top-level
70
+ * `this` is undefined and the same line exports nothing.
71
+ * - `exports.foo = lib.imported` / `exports.foo = importedName` — forwarded
72
+ * as a re-export (`reexport-alias`), so callers reach the ORIGINAL
73
+ * definition. A plain import binding would not do: it is private to its
74
+ * module, exactly as in ESM.
75
+ * - `module.exports = fn` — the whole module is the callable, so it is named
76
+ * after the file (`index.js` takes its parent directory). A named function
77
+ * expression keeps its own name. `exports = fn` is NOT indexed: rebinding
78
+ * `exports` exports nothing in CommonJS, it only breaks the alias.
79
+ *
80
+ * Two deliberate non-cases. `exports.foo = localFn`, where the value is a
81
+ * locally declared function, needs nothing — the module scope already binds
82
+ * `localFn` and importers already resolve through it. And a CJS export whose
83
+ * name the module ALSO declares lexically is suppressed rather than declared
84
+ * twice: two declarations of one name are ambiguous, and the resolver would
85
+ * drop the intra-module edge entirely.
86
+ *
87
+ * Callable members assigned through a receiver are Methods with an owner edge
88
+ * rather than free functions: `Foo.prototype.bar = fn` and `this.bar = fn`
89
+ * inside a constructor. Ownership resolves to what the file declares, so an
90
+ * owner it cannot see (`External.prototype.x = fn`) claims no edge.
42
91
  */
43
92
  export { emitJsScopeCaptures } from './captures.js';
44
93
  export { interpretJsImport, interpretJsTypeBinding } from './interpret.js';
@@ -46,6 +46,7 @@
46
46
  * tree-sitter init cost per file.
47
47
  */
48
48
  import Parser from 'tree-sitter';
49
+ export declare const JAVASCRIPT_SCOPE_QUERY: string;
49
50
  export declare function getJsParser(filePath?: string): Parser;
50
51
  export declare function getJsScopeQuery(filePath?: string): Parser.Query;
51
52
  /** Validate that a cached Tree was produced by the JS grammar. */