cgraphx 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  2. package/dist/core/code/engine/cli/analyze.js +1086 -0
  3. package/dist/core/code/engine/cli/cli-message.js +83 -0
  4. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  5. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  6. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  7. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  8. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  9. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  10. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  11. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  12. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  13. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  14. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  15. package/dist/core/code/engine/cli/status.js +156 -0
  16. package/dist/core/code/engine/cli/tool.js +384 -0
  17. package/dist/core/code/engine/config/ignore-service.js +511 -0
  18. package/dist/core/code/engine/config/supported-languages.js +17 -0
  19. package/dist/core/code/engine/core/analysis-features.js +64 -0
  20. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  21. package/dist/core/code/engine/core/git-staleness.js +180 -0
  22. package/dist/core/code/engine/core/graph/graph.js +180 -0
  23. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  24. package/dist/core/code/engine/core/graph/types.js +2 -0
  25. package/dist/core/code/engine/core/index-freshness.js +12 -0
  26. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  27. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  28. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  29. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  30. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  31. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  32. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  33. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  34. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  35. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  36. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  37. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  38. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  39. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  40. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  41. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  42. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  43. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  44. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  45. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  46. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  47. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  48. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  49. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  50. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  51. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  52. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  53. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  54. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  55. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  56. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  57. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  58. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  81. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  82. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  83. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  84. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  85. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  86. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  87. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  88. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  89. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  90. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  91. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  92. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  93. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  94. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  95. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  96. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  97. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  98. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  99. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  100. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  101. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  102. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  103. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  104. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  105. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  106. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  107. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  108. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  109. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  110. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  111. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  113. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  114. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  115. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  116. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  117. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  118. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  119. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  120. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  121. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  122. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  123. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  124. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  125. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  126. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  127. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  128. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  129. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  130. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  131. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  132. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  133. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  134. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  135. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  136. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  137. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  138. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  139. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  140. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  141. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  142. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  143. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  144. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  145. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  146. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  147. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  148. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  149. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  150. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  151. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  157. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  158. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  159. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  160. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  161. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  162. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  163. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  164. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  165. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  166. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  167. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  168. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  169. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  170. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  171. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  172. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  173. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  174. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  175. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  176. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  177. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  178. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  179. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  180. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  181. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  182. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  183. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  184. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  185. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  186. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  187. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  188. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  189. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  190. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  191. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  199. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  200. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  201. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  202. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  203. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  204. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  205. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  206. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  207. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  208. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  209. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  210. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  211. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  212. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  213. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  214. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  215. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  217. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  218. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  219. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  220. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  221. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  222. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  223. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  224. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  225. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  226. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  227. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  228. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  229. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  230. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  231. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  232. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  233. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  234. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  235. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  236. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  237. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  238. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  239. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  240. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  241. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  242. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  243. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  244. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  245. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  246. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  247. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  248. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  249. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  250. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  257. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  258. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  259. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  260. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  261. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  262. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  263. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  264. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  265. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  266. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  267. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  268. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  269. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  270. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  271. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  272. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  273. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  274. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  281. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  282. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  283. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  284. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  285. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  286. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  287. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  288. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  289. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  290. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  291. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  292. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  293. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  294. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  295. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  296. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  297. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  298. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  299. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  300. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  301. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  302. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  303. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  304. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  305. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  306. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  307. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  308. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  315. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  316. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  317. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  318. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  319. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  320. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  321. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  322. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  323. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  324. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  325. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  326. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  327. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  328. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  329. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  330. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  331. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  332. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  333. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  334. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  335. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  336. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  337. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  338. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  339. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  340. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  341. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  342. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  343. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  344. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  345. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  346. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  347. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  348. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  349. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  350. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  351. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  352. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  353. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  354. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  355. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  356. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  357. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  358. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  359. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  360. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  361. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  362. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  363. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  364. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  365. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  366. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  367. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  368. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  369. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  370. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  371. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  372. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  373. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  374. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  375. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  376. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  377. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  378. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  379. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  380. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  381. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  382. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  383. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  384. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  385. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  386. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  387. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  388. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  389. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  390. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  391. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  396. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  397. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  398. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  399. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  400. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  401. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  402. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  403. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  404. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  405. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  406. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  407. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  408. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  409. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  410. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  411. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  412. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  414. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  415. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  416. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  417. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  418. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  419. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  420. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  421. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  422. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  423. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  424. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  425. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  426. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  427. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  428. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  429. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  430. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  431. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  432. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  433. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  434. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  435. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  436. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  437. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  438. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  439. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  440. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  442. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  443. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  444. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  445. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  446. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  447. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  448. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  449. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  450. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  451. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  452. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  453. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  454. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  455. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  456. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  457. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  458. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  459. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  460. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  461. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  468. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  469. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  470. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  471. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  472. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  473. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  474. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  475. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  476. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  477. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  478. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  479. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  480. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  481. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  482. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  483. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  484. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  485. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  486. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  487. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  488. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  489. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  490. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  491. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  492. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  493. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  494. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  495. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  496. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  497. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  498. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  499. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  500. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  501. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  502. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  513. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  514. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  515. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  516. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  517. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  518. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  519. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  520. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  521. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  522. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  523. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  524. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  525. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  526. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  527. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  528. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  529. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  530. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  531. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  532. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  533. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  534. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  535. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  536. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  537. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  538. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  539. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  540. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  541. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  542. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  543. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  544. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  545. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  546. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  547. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  548. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  549. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  550. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  551. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  552. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  553. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  554. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  555. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  556. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  557. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  558. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  559. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  560. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  561. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  562. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  563. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  564. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  565. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  566. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  567. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  568. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  569. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  570. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  571. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  572. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  573. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  574. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  575. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  576. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  577. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  578. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  579. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  580. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  581. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  582. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  583. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  584. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  585. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  586. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  587. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  588. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  589. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  590. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  591. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  592. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  593. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  594. package/dist/core/code/engine/core/logger.js +339 -0
  595. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  596. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  597. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  598. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  599. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  600. package/dist/core/code/engine/lib/utils.js +121 -0
  601. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  602. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  603. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  604. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  605. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  606. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  607. package/dist/core/code/engine/storage/branch-index.js +72 -0
  608. package/dist/core/code/engine/storage/file-hash.js +95 -0
  609. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  610. package/dist/core/code/engine/storage/git.js +555 -0
  611. package/dist/core/code/engine/storage/index-lock.js +664 -0
  612. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  613. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  614. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  615. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  616. package/dist/core/code/engine/types/pipeline.js +2 -0
  617. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  618. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  619. package/dist/core/code/shared/graph/types.js +8 -0
  620. package/dist/core/code/shared/index.js +105 -0
  621. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  622. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  623. package/dist/core/code/shared/integrations/retry.js +70 -0
  624. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  625. package/dist/core/code/shared/language-detection.js +162 -0
  626. package/dist/core/code/shared/languages.js +27 -0
  627. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  628. package/dist/core/code/shared/mro-strategy.js +2 -0
  629. package/dist/core/code/shared/pipeline.js +5 -0
  630. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  631. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  632. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  633. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  634. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  635. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  636. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  637. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  638. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  639. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  640. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  641. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  642. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  643. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  644. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  645. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  646. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  647. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  648. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  649. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  650. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  651. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  652. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  653. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  654. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  655. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  656. package/dist/core/code/shared/test-helpers.js +17 -0
  657. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  658. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  659. package/dist/core/timeline/cli.d.ts.map +1 -1
  660. package/dist/core/timeline/cli.js +13 -6
  661. package/dist/core/timeline/cli.js.map +1 -1
  662. package/dist/core/timeline/debris.d.ts +20 -0
  663. package/dist/core/timeline/debris.d.ts.map +1 -0
  664. package/dist/core/timeline/debris.js +124 -0
  665. package/dist/core/timeline/debris.js.map +1 -0
  666. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  667. package/dist/core/timeline/hook-runner.js +3 -1
  668. package/dist/core/timeline/hook-runner.js.map +1 -1
  669. package/dist/core/timeline/hooks.d.ts.map +1 -1
  670. package/dist/core/timeline/hooks.js +13 -5
  671. package/dist/core/timeline/hooks.js.map +1 -1
  672. package/dist/core/timeline/installer.d.ts +2 -0
  673. package/dist/core/timeline/installer.d.ts.map +1 -1
  674. package/dist/core/timeline/installer.js +12 -0
  675. package/dist/core/timeline/installer.js.map +1 -1
  676. package/dist/core/timeline/project-root.d.ts +21 -0
  677. package/dist/core/timeline/project-root.d.ts.map +1 -0
  678. package/dist/core/timeline/project-root.js +83 -0
  679. package/dist/core/timeline/project-root.js.map +1 -0
  680. package/package.json +1 -1
@@ -0,0 +1,544 @@
1
+ "use strict";
2
+ /**
3
+ * Vue SFC (Single File Component) script extractor.
4
+ *
5
+ * Extracts the <script> / <script setup> block content from .vue files
6
+ * so it can be parsed by the TypeScript tree-sitter grammar.
7
+ *
8
+ * Pure function — no tree-sitter dependency, safe for worker threads.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.isVueSetupTopLevel = void 0;
12
+ exports.extractVueScript = extractVueScript;
13
+ exports.extractTemplateComponents = extractTemplateComponents;
14
+ exports.extractComponentEventBindings = extractComponentEventBindings;
15
+ exports.extractNativeElementEventHandlers = extractNativeElementEventHandlers;
16
+ exports.extractScriptEmitCalls = extractScriptEmitCalls;
17
+ exports.extractTemplateAttributeBindings = extractTemplateAttributeBindings;
18
+ exports.extractVueTemplateEdgeData = extractVueTemplateEdgeData;
19
+ // Closing-tag pattern accepts:
20
+ // - whitespace before `>` — `</script >`, `</script\t\n>`
21
+ // - attribute-like junk after `script` — `</script foo="bar">`,
22
+ // `</script\t\n bar>`
23
+ // - any case — `</SCRIPT>`, `</Script>`
24
+ //
25
+ // HTML5 parses `</script foo>` as a valid close tag (attributes on
26
+ // close tags are ignored by the parser but still terminate the script
27
+ // block). A strict `<\/script\s*>` would miss those forms and let a
28
+ // crafted Vue file hide content from this extractor — exactly the
29
+ // CodeQL `js/bad-tag-filter` failure mode (the published test cases
30
+ // it checks include `</script foo="bar">` and `</script\t\n bar>`).
31
+ //
32
+ // `[^>]*` after `</script` accepts everything up to the next `>`,
33
+ // matching the HTML parser's actual close-tag behaviour. The `i` flag
34
+ // covers the case axis. PR #1330 CI surfaced both the case and
35
+ // attribute axes; this expression closes both at once.
36
+ const SCRIPT_RE = /<script(\s[^>]*)?>([^]*?)<\/script[^>]*>/gi;
37
+ const TEMPLATE_COMPONENT_RE = /<([A-Z][A-Za-z0-9]+)/g;
38
+ const TEMPLATE_KEBAB_COMPONENT_RE = /<([a-z][a-z0-9]*(?:-[a-z0-9]+)+)\b/g;
39
+ // Greedy: matches from the first <template> to the *last* </template>.
40
+ // This is intentional — nested <template v-slot:...> tags are valid Vue
41
+ // syntax and we want the entire outermost template body.
42
+ const TEMPLATE_RE = /<template(\s[^>]*)?>([^]*)<\/template>/;
43
+ const VUE_BUILTIN_KEBAB_TAGS = new Set([
44
+ 'router-view',
45
+ 'router-link',
46
+ 'transition',
47
+ 'transition-group',
48
+ 'keep-alive',
49
+ 'teleport',
50
+ 'suspense',
51
+ 'component',
52
+ 'slot',
53
+ ]);
54
+ function countNewlines(text) {
55
+ let count = 0;
56
+ for (let i = 0; i < text.length; i++) {
57
+ if (text.charCodeAt(i) === 10)
58
+ count++;
59
+ }
60
+ return count;
61
+ }
62
+ function kebabToPascal(name) {
63
+ return name
64
+ .split('-')
65
+ .filter((part) => part.length > 0)
66
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
67
+ .join('');
68
+ }
69
+ function isBuiltinKebabTag(tagName) {
70
+ return VUE_BUILTIN_KEBAB_TAGS.has(tagName);
71
+ }
72
+ /**
73
+ * Extract bare `emit('event')` / `$emit('event')` calls from script text.
74
+ *
75
+ * Uses a lightweight lexer state-machine (code vs comments/strings), so:
76
+ * - ignores `emit(...)` in comments and string literals
77
+ * - ignores property calls like `socket.emit(...)` / `this.$emit(...)`
78
+ * - captures only literal-string event names
79
+ */
80
+ function collectBareEmitEventNames(input) {
81
+ let Mode;
82
+ (function (Mode) {
83
+ Mode[Mode["Code"] = 0] = "Code";
84
+ Mode[Mode["SingleQuote"] = 1] = "SingleQuote";
85
+ Mode[Mode["DoubleQuote"] = 2] = "DoubleQuote";
86
+ Mode[Mode["Template"] = 3] = "Template";
87
+ Mode[Mode["LineComment"] = 4] = "LineComment";
88
+ Mode[Mode["BlockComment"] = 5] = "BlockComment";
89
+ })(Mode || (Mode = {}));
90
+ const events = [];
91
+ const seen = new Set();
92
+ let mode = Mode.Code;
93
+ const isIdentChar = (c) => /[A-Za-z0-9_$]/.test(c);
94
+ const skipSpaces = (idx) => {
95
+ let i = idx;
96
+ while (i < input.length && /\s/.test(input[i]))
97
+ i++;
98
+ return i;
99
+ };
100
+ /**
101
+ * Return true if the token immediately before the `.` at `dotIdx` is the
102
+ * keyword `this` and is not itself a property access (e.g. not `foo.this`).
103
+ * Used to allow `this.$emit(...)` while blocking `socket.emit(...)`.
104
+ */
105
+ const lookbackIsThis = (dotIdx) => {
106
+ let j = dotIdx - 1; // step past the '.'
107
+ while (j >= 0 && /\s/.test(input[j]))
108
+ j--;
109
+ if (j < 3)
110
+ return false;
111
+ if (input.slice(j - 3, j + 1) !== 'this')
112
+ return false;
113
+ // Ensure 'this' is not itself a property target (e.g. foo.this)
114
+ const prevOfThis = j >= 4 ? input[j - 4] : '';
115
+ return !(prevOfThis.length > 0 && (isIdentChar(prevOfThis) || prevOfThis === '.'));
116
+ };
117
+ const tryConsumeEmitCall = (idx) => {
118
+ const hasDollar = input[idx] === '$';
119
+ const name = hasDollar ? '$emit' : 'emit';
120
+ if (!input.startsWith(name, idx))
121
+ return idx;
122
+ const prev = idx > 0 ? input[idx - 1] : '';
123
+ if (prev.length > 0 && isIdentChar(prev))
124
+ return idx;
125
+ if (prev === '.') {
126
+ // Allow `this.$emit(...)` / `this.emit(...)` but block `socket.emit(...)`.
127
+ if (!lookbackIsThis(idx - 1))
128
+ return idx;
129
+ }
130
+ const afterName = idx + name.length;
131
+ const next = afterName < input.length ? input[afterName] : '';
132
+ if (next.length > 0 && isIdentChar(next))
133
+ return idx;
134
+ let i = skipSpaces(afterName);
135
+ if (input[i] !== '(')
136
+ return idx;
137
+ i = skipSpaces(i + 1);
138
+ const quote = input[i];
139
+ if (quote !== "'" && quote !== '"')
140
+ return idx;
141
+ let eventName = '';
142
+ i++;
143
+ while (i < input.length) {
144
+ const ch = input[i];
145
+ if (ch === '\\') {
146
+ i += 2;
147
+ continue;
148
+ }
149
+ if (ch === quote)
150
+ break;
151
+ eventName += ch;
152
+ i++;
153
+ }
154
+ if (i >= input.length)
155
+ return idx;
156
+ // Allow simple names ("save"), hyphenated names ("user-loaded"), and
157
+ // update modifier patterns ("update:modelValue", "update:model-value").
158
+ if (/^[A-Za-z$_][A-Za-z0-9:_$-]*$/.test(eventName) && !seen.has(eventName)) {
159
+ seen.add(eventName);
160
+ events.push(eventName);
161
+ }
162
+ return i;
163
+ };
164
+ for (let i = 0; i < input.length; i++) {
165
+ const ch = input[i];
166
+ const next = i + 1 < input.length ? input[i + 1] : '';
167
+ if (mode === Mode.Code) {
168
+ const consumedAt = tryConsumeEmitCall(i);
169
+ if (consumedAt !== i) {
170
+ i = consumedAt;
171
+ continue;
172
+ }
173
+ if (ch === "'" || ch === '"' || ch === '`') {
174
+ mode = ch === "'" ? Mode.SingleQuote : ch === '"' ? Mode.DoubleQuote : Mode.Template;
175
+ continue;
176
+ }
177
+ if (ch === '/' && next === '/') {
178
+ mode = Mode.LineComment;
179
+ i++;
180
+ }
181
+ else if (ch === '/' && next === '*') {
182
+ mode = Mode.BlockComment;
183
+ i++;
184
+ }
185
+ continue;
186
+ }
187
+ if (mode === Mode.LineComment) {
188
+ if (ch === '\n') {
189
+ mode = Mode.Code;
190
+ }
191
+ continue;
192
+ }
193
+ if (mode === Mode.BlockComment) {
194
+ if (ch === '*' && next === '/') {
195
+ i++;
196
+ mode = Mode.Code;
197
+ }
198
+ continue;
199
+ }
200
+ if (ch === '\\') {
201
+ i++;
202
+ continue;
203
+ }
204
+ if ((mode === Mode.SingleQuote && ch === "'") ||
205
+ (mode === Mode.DoubleQuote && ch === '"') ||
206
+ (mode === Mode.Template && ch === '`')) {
207
+ mode = Mode.Code;
208
+ }
209
+ }
210
+ return events;
211
+ }
212
+ function parseScriptBlock(attrs, content, precedingText) {
213
+ const isSetup = attrs != null && /\bsetup\b/.test(attrs);
214
+ const langMatch = attrs?.match(/\blang\s*=\s*["']([^"']+)["']/);
215
+ const lang = langMatch ? langMatch[1] : '';
216
+ // +1 for the newline after the opening <script...> tag
217
+ const lineOffset = countNewlines(precedingText) + 1;
218
+ return { content, lineOffset, isSetup, lang };
219
+ }
220
+ /**
221
+ * Extract script content from a Vue SFC.
222
+ *
223
+ * When both <script> and <script setup> are present, the content of all
224
+ * blocks is combined (non-setup first, then setup) so the full script
225
+ * surface is available to the knowledge graph.
226
+ */
227
+ function extractVueScript(vueContent) {
228
+ const blocks = [];
229
+ let match;
230
+ // Reset lastIndex for reuse of the global regex
231
+ SCRIPT_RE.lastIndex = 0;
232
+ while ((match = SCRIPT_RE.exec(vueContent)) !== null) {
233
+ const precedingText = vueContent.slice(0, match.index + match[0].indexOf(match[2]));
234
+ blocks.push(parseScriptBlock(match[1], match[2], precedingText));
235
+ }
236
+ if (blocks.length === 0)
237
+ return null;
238
+ // Merge all blocks: non-setup first, then setup, so content order is stable.
239
+ const nonSetupBlocks = blocks.filter((b) => !b.isSetup);
240
+ const setupBlocks = blocks.filter((b) => b.isSetup);
241
+ const ordered = [...nonSetupBlocks, ...setupBlocks];
242
+ const combinedContent = ordered.map((b) => b.content).join('\n');
243
+ const lineOffset = ordered[0].lineOffset;
244
+ // Only use JavaScript grammar when ALL blocks are explicitly lang="js"
245
+ // or lang="jsx". If any block omits lang or uses ts/tsx, TypeScript wins.
246
+ const allBlocksJs = blocks.length > 0 && blocks.every((b) => b.lang === 'js' || b.lang === 'jsx');
247
+ const lang = allBlocksJs ? 'js' : '';
248
+ return {
249
+ scriptContent: combinedContent,
250
+ lineOffset,
251
+ isSetup: blocks.some((b) => b.isSetup),
252
+ lang,
253
+ };
254
+ }
255
+ /**
256
+ * Vue <script setup>: all top-level bindings are implicitly exported.
257
+ * Returns true if the node (or any ancestor) has the `program` root as its
258
+ * direct parent — i.e. the node is at the top level of the script block.
259
+ *
260
+ * Shared between the worker and sequential parsing paths.
261
+ */
262
+ const isVueSetupTopLevel = (node) => {
263
+ if (!node)
264
+ return false;
265
+ let current = node;
266
+ while (current) {
267
+ if (current.parent?.type === 'program')
268
+ return true;
269
+ current = current.parent;
270
+ }
271
+ return false;
272
+ };
273
+ exports.isVueSetupTopLevel = isVueSetupTopLevel;
274
+ /**
275
+ * Extract PascalCase component names used in <template>.
276
+ * Returns deduplicated component names (e.g., ["MyButton", "AppHeader"]).
277
+ */
278
+ function extractTemplateComponents(vueContent) {
279
+ const templateMatch = TEMPLATE_RE.exec(vueContent);
280
+ if (!templateMatch)
281
+ return [];
282
+ const templateContent = templateMatch[2];
283
+ const components = new Set();
284
+ let componentMatch;
285
+ TEMPLATE_COMPONENT_RE.lastIndex = 0;
286
+ while ((componentMatch = TEMPLATE_COMPONENT_RE.exec(templateContent)) !== null) {
287
+ components.add(componentMatch[1]);
288
+ }
289
+ TEMPLATE_KEBAB_COMPONENT_RE.lastIndex = 0;
290
+ while ((componentMatch = TEMPLATE_KEBAB_COMPONENT_RE.exec(templateContent)) !== null) {
291
+ if (isBuiltinKebabTag(componentMatch[1]))
292
+ continue;
293
+ components.add(kebabToPascal(componentMatch[1]));
294
+ }
295
+ return [...components];
296
+ }
297
+ // ── Per-element event binding extraction ──────────────────────────────────
298
+ //
299
+ // Three sibling regexes capture opening tags distinguished by PascalCase
300
+ // (Vue components), kebab-case (Vue components in kebab form), and simple
301
+ // lowercase (native HTML elements). All stop their attribute-block capture
302
+ // at the first `>` with a bounded span of at most 512 characters to avoid
303
+ // pathological backtracking on large template files (ReDoS mitigation).
304
+ // Multi-line tags whose attribute block contains a literal `>` are documented
305
+ // as a known limitation (#1647).
306
+ //
307
+ // NATIVE_TAG_RE uses `(?![A-Za-z0-9-])` to prevent matching the `post` prefix
308
+ // of a kebab-case component tag like `<post-list>` — such tags are handled by
309
+ // KEBAB_COMPONENT_TAG_RE, not NATIVE_TAG_RE.
310
+ const COMPONENT_TAG_RE = /<([A-Z][A-Za-z0-9]+)([^>]{0,512}?)(?:\/>|>)/g;
311
+ const KEBAB_COMPONENT_TAG_RE = /<([a-z][a-z0-9]*(?:-[a-z0-9]+)+)([^>]{0,512}?)(?:\/>|>)/g;
312
+ const NATIVE_TAG_RE = /<([a-z][a-z0-9]*)(?![A-Za-z0-9-])([^>]{0,512}?)(?:\/>|>)/g;
313
+ // Within any tag's attribute block: matches Vue event bindings.
314
+ // @action="handleAction"
315
+ // @keyup.enter="submit"
316
+ // @user-loaded="onLoaded" — hyphenated event names
317
+ // @update:model-value="onChange" — update modifier with colon
318
+ // v-on:click="onClick"
319
+ const TAG_EVENT_RE = /(?:@|v-on:)([\w:.-]+)\s*=\s*["']([A-Za-z_$][A-Za-z0-9_$]*)["']/g;
320
+ // ── Script emit() call extraction ─────────────────────────────────────────
321
+ // Matches simple variable references in Vue bound-attribute values.
322
+ // Captures only bare identifiers — not member-access (":key=\"post.id\""),
323
+ // literals (":id=\"1\""), or expressions (":val=\"a + b\"").
324
+ //
325
+ // :userId="currentUserId" → "currentUserId"
326
+ // :posts="allPosts" → "allPosts"
327
+ // v-bind:disabled="isLoading" → "isLoading"
328
+ // :key="post.id" — skipped (member access)
329
+ // :id="1" — skipped (literal)
330
+ const BOUND_ATTR_RE = /(?::[\w-]+|v-bind:[\w-]+)\s*=\s*["']([A-Za-z_$][A-Za-z0-9_$]*)["']/g;
331
+ /**
332
+ * Extract Vue component event bindings from a `<template>` block.
333
+ *
334
+ * Scans PascalCase component elements (e.g. `<PostList>`, `<UserCard>`) and
335
+ * returns each `@event="handler"` binding found in the element's attribute
336
+ * block. Native HTML element event handlers (`@click` on `<button>`, etc.)
337
+ * are intentionally excluded — only component-to-component event bindings
338
+ * that go through Vue's `emit()` / `defineEmits` system are included.
339
+ *
340
+ * **Limitation:** component tags whose attribute block spans multiple lines
341
+ * and contains a `>` inside an attribute value are not captured (the regex
342
+ * stops at the first `>`). Full template AST parsing would be required for
343
+ * those edge cases (tracked in #1647).
344
+ */
345
+ function extractComponentEventBindings(vueContent) {
346
+ const templateMatch = TEMPLATE_RE.exec(vueContent);
347
+ if (!templateMatch)
348
+ return [];
349
+ const templateContent = templateMatch[2];
350
+ const bindings = [];
351
+ const seen = new Set();
352
+ COMPONENT_TAG_RE.lastIndex = 0;
353
+ let tagMatch;
354
+ while ((tagMatch = COMPONENT_TAG_RE.exec(templateContent)) !== null) {
355
+ const componentName = tagMatch[1];
356
+ const attrs = tagMatch[2];
357
+ TAG_EVENT_RE.lastIndex = 0;
358
+ let eventMatch;
359
+ while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
360
+ const eventName = eventMatch[1];
361
+ const handlerName = eventMatch[2];
362
+ const key = `${componentName}::${eventName}::${handlerName}`;
363
+ if (seen.has(key))
364
+ continue;
365
+ seen.add(key);
366
+ bindings.push({ componentName, eventName, handlerName });
367
+ }
368
+ }
369
+ KEBAB_COMPONENT_TAG_RE.lastIndex = 0;
370
+ while ((tagMatch = KEBAB_COMPONENT_TAG_RE.exec(templateContent)) !== null) {
371
+ if (isBuiltinKebabTag(tagMatch[1]))
372
+ continue;
373
+ const componentName = kebabToPascal(tagMatch[1]);
374
+ const attrs = tagMatch[2];
375
+ TAG_EVENT_RE.lastIndex = 0;
376
+ let eventMatch;
377
+ while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
378
+ const eventName = eventMatch[1];
379
+ const handlerName = eventMatch[2];
380
+ const key = `${componentName}::${eventName}::${handlerName}`;
381
+ if (seen.has(key))
382
+ continue;
383
+ seen.add(key);
384
+ bindings.push({ componentName, eventName, handlerName });
385
+ }
386
+ }
387
+ return bindings;
388
+ }
389
+ /**
390
+ * Extract event handler names bound to native HTML elements in the template.
391
+ *
392
+ * Only processes lowercase-named elements (`<button>`, `<input>`, `<div>`,
393
+ * etc.) — PascalCase component elements are handled by
394
+ * `extractComponentEventBindings`. Returns bare handler identifiers only;
395
+ * inline expressions with arguments or arrow functions are excluded.
396
+ *
397
+ * These handlers represent direct DOM-event→function relationships and
398
+ * are emitted as `CALLS` edges (not `BINDS_EVENT_HANDLER`), because native
399
+ * events are synchronous browser callbacks, not Vue's component-event system.
400
+ */
401
+ function extractNativeElementEventHandlers(vueContent) {
402
+ const templateMatch = TEMPLATE_RE.exec(vueContent);
403
+ if (!templateMatch)
404
+ return [];
405
+ const templateContent = templateMatch[2];
406
+ const handlers = [];
407
+ NATIVE_TAG_RE.lastIndex = 0;
408
+ let tagMatch;
409
+ while ((tagMatch = NATIVE_TAG_RE.exec(templateContent)) !== null) {
410
+ const attrs = tagMatch[2];
411
+ TAG_EVENT_RE.lastIndex = 0;
412
+ let eventMatch;
413
+ while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
414
+ handlers.push(eventMatch[2]);
415
+ }
416
+ }
417
+ return handlers;
418
+ }
419
+ /**
420
+ * Extract `emit('eventName', ...)` calls from a Vue SFC's `<script>` block.
421
+ *
422
+ * Scans the raw SFC source (full `.vue` file), extracts the script content,
423
+ * then finds bare `emit('...')` calls. Only captures literal string event
424
+ * names — dynamic expressions (`emit(eventName)`) are excluded.
425
+ *
426
+ * Returns deduplicated emit declarations.
427
+ */
428
+ function extractScriptEmitCalls(vueContent, options = {}) {
429
+ const sourceKind = options.sourceKind ?? 'full-sfc';
430
+ const scriptText = sourceKind === 'pre-extracted-script'
431
+ ? vueContent
432
+ : (extractVueScript(vueContent)?.scriptContent ?? null);
433
+ if (!scriptText)
434
+ return [];
435
+ return collectBareEmitEventNames(scriptText).map((eventName) => ({ eventName }));
436
+ }
437
+ /**
438
+ * Extract variable identifiers from Vue template bound-attribute values.
439
+ *
440
+ * Covers `:prop="varName"` and `v-bind:prop="varName"` patterns where
441
+ * the value is a single plain identifier. Member-access expressions
442
+ * (`:key="post.id"`) and literals are excluded by design.
443
+ *
444
+ * Returns deduplicated identifier names.
445
+ */
446
+ function extractTemplateAttributeBindings(vueContent) {
447
+ const templateMatch = TEMPLATE_RE.exec(vueContent);
448
+ if (!templateMatch)
449
+ return [];
450
+ const templateContent = templateMatch[2];
451
+ const vars = new Set();
452
+ let match;
453
+ BOUND_ATTR_RE.lastIndex = 0;
454
+ while ((match = BOUND_ATTR_RE.exec(templateContent)) !== null) {
455
+ vars.add(match[1]);
456
+ }
457
+ return [...vars];
458
+ }
459
+ /**
460
+ * Extract all template-derived edge data from a Vue SFC in a single pass.
461
+ *
462
+ * Parses the `<template>` block once and the `<script>` block once, then
463
+ * runs all five extractors on the pre-parsed content rather than repeating
464
+ * the regex on every individual call. Used by `emitPostResolutionEdges`
465
+ * to avoid multiple full-file scans per `.vue` file.
466
+ */
467
+ function extractVueTemplateEdgeData(vueContent, options = {}) {
468
+ // Extract template content once.
469
+ const templateMatch = TEMPLATE_RE.exec(vueContent);
470
+ const tmpl = templateMatch ? templateMatch[2] : '';
471
+ // Template components (PascalCase + kebab-case).
472
+ const componentSet = new Set();
473
+ if (tmpl) {
474
+ TEMPLATE_COMPONENT_RE.lastIndex = 0;
475
+ let m;
476
+ while ((m = TEMPLATE_COMPONENT_RE.exec(tmpl)) !== null)
477
+ componentSet.add(m[1]);
478
+ TEMPLATE_KEBAB_COMPONENT_RE.lastIndex = 0;
479
+ while ((m = TEMPLATE_KEBAB_COMPONENT_RE.exec(tmpl)) !== null) {
480
+ if (!isBuiltinKebabTag(m[1]))
481
+ componentSet.add(kebabToPascal(m[1]));
482
+ }
483
+ }
484
+ // Native element event handlers.
485
+ const nativeHandlers = [];
486
+ if (tmpl) {
487
+ NATIVE_TAG_RE.lastIndex = 0;
488
+ let tagM;
489
+ while ((tagM = NATIVE_TAG_RE.exec(tmpl)) !== null) {
490
+ TAG_EVENT_RE.lastIndex = 0;
491
+ let evM;
492
+ while ((evM = TAG_EVENT_RE.exec(tagM[2])) !== null)
493
+ nativeHandlers.push(evM[2]);
494
+ }
495
+ }
496
+ // Component event bindings.
497
+ const componentBindings = [];
498
+ const bindingSeen = new Set();
499
+ const processComponentAttrs = (componentName, attrs) => {
500
+ TAG_EVENT_RE.lastIndex = 0;
501
+ let evM;
502
+ while ((evM = TAG_EVENT_RE.exec(attrs)) !== null) {
503
+ const key = `${componentName}::${evM[1]}::${evM[2]}`;
504
+ if (!bindingSeen.has(key)) {
505
+ bindingSeen.add(key);
506
+ componentBindings.push({ componentName, eventName: evM[1], handlerName: evM[2] });
507
+ }
508
+ }
509
+ };
510
+ if (tmpl) {
511
+ COMPONENT_TAG_RE.lastIndex = 0;
512
+ let tagM;
513
+ while ((tagM = COMPONENT_TAG_RE.exec(tmpl)) !== null)
514
+ processComponentAttrs(tagM[1], tagM[2]);
515
+ KEBAB_COMPONENT_TAG_RE.lastIndex = 0;
516
+ while ((tagM = KEBAB_COMPONENT_TAG_RE.exec(tmpl)) !== null) {
517
+ if (!isBuiltinKebabTag(tagM[1]))
518
+ processComponentAttrs(kebabToPascal(tagM[1]), tagM[2]);
519
+ }
520
+ }
521
+ // Script emit() calls.
522
+ const sourceKind = options.sourceKind ?? 'full-sfc';
523
+ const scriptText = sourceKind === 'pre-extracted-script'
524
+ ? vueContent
525
+ : (extractVueScript(vueContent)?.scriptContent ?? null);
526
+ const scriptEmitCalls = scriptText
527
+ ? collectBareEmitEventNames(scriptText).map((eventName) => ({ eventName }))
528
+ : [];
529
+ // Bound attribute bindings.
530
+ const attrVars = new Set();
531
+ if (tmpl) {
532
+ BOUND_ATTR_RE.lastIndex = 0;
533
+ let m;
534
+ while ((m = BOUND_ATTR_RE.exec(tmpl)) !== null)
535
+ attrVars.add(m[1]);
536
+ }
537
+ return {
538
+ templateComponents: [...componentSet],
539
+ nativeEventHandlers: nativeHandlers,
540
+ componentEventBindings: componentBindings,
541
+ scriptEmitCalls,
542
+ templateAttributeBindings: [...attrVars],
543
+ };
544
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * The id rules for a callable nested inside another callable (#2699).
4
+ *
5
+ * Extracted from `parse-worker.ts` for one reason: **three** phases there
6
+ * build these ids independently — the definition phase
7
+ * (`callableOwnQualifiedName`), the caller-attribution phase
8
+ * (`findEnclosingFunctionId`), and the worker-path node-id derivation in
9
+ * `processFileGroup`. An id they compute differently is not a test failure;
10
+ * the caller attaches to a node that does not exist, so the edge is dropped
11
+ * rather than reported. "Zero dangling edges" is what that looks like from
12
+ * outside, which is why the divergence #2714 fixed went unnoticed.
13
+ *
14
+ * These functions are pure and free of module-scope side effects, unlike
15
+ * `parse-worker.ts`, which posts a `ready` message to `parentPort` at import
16
+ * and therefore cannot be value-imported by a unit test at all. That is what
17
+ * makes the rule testable rather than merely commented.
18
+ *
19
+ * See `parse-worker.ts`'s `enclosingCallablePrefix` for how the prefix passed
20
+ * in here is derived, and why only genuinely nested callables get one.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.nestedCallableQualifiedName = exports.localIdentity = void 0;
24
+ exports.boundCallableStartRow = boundCallableStartRow;
25
+ const definition_id_js_1 = require("../scope-resolution/utils/definition-id.js");
26
+ const LOCAL_IDENTITY_SUFFIX = /@\d+:\d+$/;
27
+ function simpleDefinitionName(def) {
28
+ const qualifiedName = def.qualifiedName;
29
+ if (qualifiedName === undefined)
30
+ return undefined;
31
+ const dot = qualifiedName.lastIndexOf('.');
32
+ const tail = dot === -1 ? qualifiedName : qualifiedName.slice(dot + 1);
33
+ return tail.replace(LOCAL_IDENTITY_SUFFIX, '');
34
+ }
35
+ function containsPosition(node, row, column) {
36
+ const start = node.startPosition;
37
+ const end = node.endPosition;
38
+ if (row < start.row || row > end.row)
39
+ return false;
40
+ if (row === start.row && column < start.column)
41
+ return false;
42
+ if (row === end.row && column > end.column)
43
+ return false;
44
+ return true;
45
+ }
46
+ /**
47
+ * Zero-based start row that keys the graph-to-scope position join for a bound
48
+ * callable (#2735).
49
+ *
50
+ * Graph-node queries may anchor on an outer binding wrapper while the scope
51
+ * channel anchors on the inner callable. The join is line-only, so a multi-line
52
+ * binding needs the graph node's `startLine` to follow the semantic definition.
53
+ *
54
+ * `ParsedFile.localDefs` is the language-agnostic source of that position.
55
+ * Matching uses only the canonical label, name, and source range; shared worker
56
+ * code does not need to know grammar node types or initializer field names.
57
+ *
58
+ * Node ids stay on the binding wrapper via `localIdentity(definitionNode)`.
59
+ * Missing or ambiguous semantic matches retain the wrapper row, preserving the
60
+ * existing fail-closed behavior.
61
+ */
62
+ function boundCallableStartRow(definitionNode, nodeName, nodeLabel, localDefs, nameNode) {
63
+ if (localDefs === undefined)
64
+ return definitionNode.startPosition.row;
65
+ const origin = nameNode?.startPosition ?? definitionNode.startPosition;
66
+ let best;
67
+ let tied = false;
68
+ for (const def of localDefs) {
69
+ if (def.type !== nodeLabel || simpleDefinitionName(def) !== nodeName)
70
+ continue;
71
+ const position = (0, definition_id_js_1.definitionIdPosition)(def.nodeId, def.filePath);
72
+ if (position === undefined)
73
+ continue;
74
+ const row = position.line - 1;
75
+ if (!containsPosition(definitionNode, row, position.column))
76
+ continue;
77
+ const distance = Math.abs(row - origin.row) * 1_000_000 + Math.abs(position.column - origin.column);
78
+ if (best === undefined || distance < best.distance) {
79
+ best = { row, distance };
80
+ tied = false;
81
+ }
82
+ else if (distance === best.distance && row !== best.row) {
83
+ tied = true;
84
+ }
85
+ }
86
+ return best !== undefined && !tied ? best.row : definitionNode.startPosition.row;
87
+ }
88
+ /**
89
+ * A function-local callable's own name segment: its name plus its declaration
90
+ * position.
91
+ *
92
+ * The name chain alone is not enough, and the gap is the language's, not the
93
+ * grammar's: ECMAScript creates an environment record per function AND per
94
+ * block, so sibling blocks in one function hold genuinely different bindings —
95
+ *
96
+ * function outer(a) {
97
+ * if (a) { const pick = …; return pick(1); } // one binding
98
+ * else { const pick = …; return pick(2); } // a DIFFERENT binding
99
+ * }
100
+ *
101
+ * — and both are `outer.pick` by name. Putting a block token in the qualifier
102
+ * would tag every local inside any `if`, the common case, and buy nothing over
103
+ * putting the position on the declaration itself: a declaration's own position
104
+ * is unique across every environment record it could belong to, without the
105
+ * qualifier having to enumerate them. One rule, no conditionals, O(1).
106
+ *
107
+ * Applied ONLY to locals. Top-level functions and class methods keep their
108
+ * bare/class-qualified ids, which is what keeps this off the symbols other
109
+ * files, saved queries and stored references actually address.
110
+ */
111
+ const localIdentity = (node, name) => `${name}@${node.startPosition.row}:${node.startPosition.column}`;
112
+ exports.localIdentity = localIdentity;
113
+ /**
114
+ * The qualified name of a callable nested inside another callable — THE single
115
+ * definition of that rule, shared by all three id-building phases.
116
+ *
117
+ * A comment asking three call sites to stay in step is exactly the invariant
118
+ * that rots; routing them through one function makes divergence require
119
+ * deleting a call rather than editing a duplicated expression.
120
+ */
121
+ const nestedCallableQualifiedName = (prefix, node, name) => `${prefix}.${(0, exports.localIdentity)(node, name)}`;
122
+ exports.nestedCallableQualifiedName = nestedCallableQualifiedName;