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,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preprocessSwiftConditionalDirectives = preprocessSwiftConditionalDirectives;
4
+ /**
5
+ * A conditional-compilation directive occupying a whole line.
6
+ *
7
+ * `[^\S\r\n]` (horizontal whitespace) rather than `[ \t]` so NBSP /
8
+ * ideographic-space indentation and a leading BOM are recognized too. Leading
9
+ * whitespace is *not* required: nesting is decided from the scanner's brace
10
+ * depth, not from indentation (a column-0 `#if` inside a class body is exactly
11
+ * the shape that loses its enclosing declaration).
12
+ */
13
+ const SWIFT_CONDITIONAL_DIRECTIVE_RE = /^[^\S\r\n]*#(if|elseif|else|endif)\b[^\r\n]*$/;
14
+ /**
15
+ * Cheap whole-file precondition, mirroring `stripUeMacros`'s `HAS_UE_HINT`.
16
+ * Derived from the line pattern so the two can never drift apart.
17
+ */
18
+ const HAS_CONDITIONAL_DIRECTIVE_HINT = new RegExp(SWIFT_CONDITIONAL_DIRECTIVE_RE.source, 'm');
19
+ function hasTripleQuoteAt(line, index) {
20
+ return line.startsWith('"""', index);
21
+ }
22
+ /**
23
+ * Length of the multiline terminator at `index`, or 0.
24
+ *
25
+ * A plain `"""` string always closes at `"""`, whatever follows it β€” an
26
+ * adjacent `#` is the next token, not part of the delimiter. A raw `#"""`
27
+ * string closes at `"""` followed by *at least* its own pound count.
28
+ */
29
+ function matchingMultilineCloseLength(line, index, poundCount) {
30
+ if (!hasTripleQuoteAt(line, index))
31
+ return 0;
32
+ if (poundCount === 0)
33
+ return 3;
34
+ return line.startsWith('#'.repeat(poundCount), index + 3) ? 3 + poundCount : 0;
35
+ }
36
+ function skipRegularString(line, startIndex, rawPoundCount) {
37
+ const endPounds = '#'.repeat(rawPoundCount);
38
+ let index = startIndex + (rawPoundCount > 0 ? rawPoundCount + 1 : 1);
39
+ while (index < line.length) {
40
+ if (line[index] === '"') {
41
+ if (rawPoundCount === 0)
42
+ return index + 1;
43
+ if (line.startsWith(endPounds, index + 1))
44
+ return index + 1 + rawPoundCount;
45
+ }
46
+ if (rawPoundCount === 0 && line[index] === '\\')
47
+ index++;
48
+ index++;
49
+ }
50
+ return line.length;
51
+ }
52
+ /**
53
+ * Skip an extended regex literal (`#/…/#`), whose body may legally contain
54
+ * `/*` β€” which would otherwise open a block comment that never closes.
55
+ * `slashIndex` points at the `/` that follows the opening pound run.
56
+ */
57
+ function skipExtendedRegexLiteral(line, slashIndex, poundCount) {
58
+ const closePounds = '#'.repeat(poundCount);
59
+ let index = slashIndex + 1;
60
+ while (index < line.length) {
61
+ if (line[index] === '\\') {
62
+ index += 2;
63
+ continue;
64
+ }
65
+ if (line[index] === '/' && line.startsWith(closePounds, index + 1)) {
66
+ return index + 1 + poundCount;
67
+ }
68
+ index++;
69
+ }
70
+ return line.length;
71
+ }
72
+ function scanSwiftLine(line, state) {
73
+ let index = 0;
74
+ while (index < line.length) {
75
+ if (state.blockCommentDepth > 0) {
76
+ if (line.startsWith('/*', index)) {
77
+ state.blockCommentDepth++;
78
+ index += 2;
79
+ }
80
+ else if (line.startsWith('*/', index)) {
81
+ state.blockCommentDepth--;
82
+ index += 2;
83
+ }
84
+ else {
85
+ index++;
86
+ }
87
+ continue;
88
+ }
89
+ if (state.multilineStringPounds !== null) {
90
+ const closeLength = matchingMultilineCloseLength(line, index, state.multilineStringPounds);
91
+ if (closeLength > 0) {
92
+ state.multilineStringPounds = null;
93
+ index += closeLength;
94
+ continue;
95
+ }
96
+ // Non-raw multiline strings honour backslash escapes, so `\"""` is string
97
+ // data and not a terminator. Raw strings escape with `\#`, so a bare
98
+ // backslash there is literal.
99
+ index += state.multilineStringPounds === 0 && line[index] === '\\' ? 2 : 1;
100
+ continue;
101
+ }
102
+ if (line.startsWith('//', index))
103
+ return;
104
+ if (line.startsWith('/*', index)) {
105
+ state.blockCommentDepth = 1;
106
+ index += 2;
107
+ continue;
108
+ }
109
+ if (line[index] === '#') {
110
+ // Count the pound run exactly once and always advance past it, so a long
111
+ // run of bare `#` stays linear instead of being re-walked per character.
112
+ let poundCount = 1;
113
+ while (line[index + poundCount] === '#')
114
+ poundCount++;
115
+ const afterPounds = index + poundCount;
116
+ if (hasTripleQuoteAt(line, afterPounds)) {
117
+ state.multilineStringPounds = poundCount;
118
+ index = afterPounds + 3;
119
+ }
120
+ else if (line[afterPounds] === '"') {
121
+ index = skipRegularString(line, index, poundCount);
122
+ }
123
+ else if (line[afterPounds] === '/') {
124
+ index = skipExtendedRegexLiteral(line, afterPounds, poundCount);
125
+ }
126
+ else {
127
+ index = afterPounds;
128
+ }
129
+ continue;
130
+ }
131
+ if (hasTripleQuoteAt(line, index)) {
132
+ state.multilineStringPounds = 0;
133
+ index += 3;
134
+ continue;
135
+ }
136
+ if (line[index] === '"') {
137
+ index = skipRegularString(line, index, 0);
138
+ continue;
139
+ }
140
+ if (line[index] === '{')
141
+ state.braceDepth++;
142
+ else if (line[index] === '}')
143
+ state.braceDepth--;
144
+ index++;
145
+ }
146
+ }
147
+ /**
148
+ * Blank nested Swift conditional-compilation directives before parsing.
149
+ *
150
+ * tree-sitter-swift 0.7.1 does not admit `directive` as a `class_body` child
151
+ * (`vendor/tree-sitter-swift/src/node-types.json`), so error recovery can
152
+ * discard the enclosing declaration. Replacing only the directive text with
153
+ * spaces preserves `.length`, line endings, and every declaration offset.
154
+ *
155
+ * ponytail: delete this file (and the `preprocessSource` wiring in `swift.ts`)
156
+ * once a vendored tree-sitter-swift release includes upstream PR #583 ("Allow
157
+ * #if/#elseif/#else/#endif directives inside type bodies"); see also upstream
158
+ * issue #298 and PR #599. `.github/vendored-grammars.json` has no `"hold"` on
159
+ * swift, so the bump bot will land that release on its own.
160
+ *
161
+ * A directive group is blanked only when **all** of these hold:
162
+ *
163
+ * - it opens at `braceDepth > 0` β€” nesting, not indentation, is what the
164
+ * grammar rejects; top-level directives are valid source-file members and
165
+ * are left intact
166
+ * - it is not inside a multiline string literal or a block comment β€” blanking
167
+ * a line that carries a block-comment terminator would un-terminate the
168
+ * comment and swallow the rest of the file, and blanking inside a literal
169
+ * would rewrite program data
170
+ * - every branch is brace-balanced. A group that splits a declaration header
171
+ * (`#if` … `func f() async {` … `#else` … `func f() {` … `#endif`) leaves
172
+ * one unmatched `{` once both branches survive, which re-parents every
173
+ * later top-level declaration. Such a group degrades to the pre-fix
174
+ * behavior instead.
175
+ *
176
+ * Known residuals, all of which degrade to "directive left in place" rather
177
+ * than to corrupted output: string interpolation is not parsed with full Swift
178
+ * expression fidelity, so a nested multiline string inside an interpolation can
179
+ * confuse the scanner; a bare `/…/` regex literal containing `/*` opens a
180
+ * phantom block comment; and a multiline extended regex literal is treated as
181
+ * ending at its first line.
182
+ *
183
+ * Byte length is *not* preserved when a blanked directive line carries
184
+ * non-ASCII trailing text (` #if os(iOS) // ζ—₯本θͺž πŸ”₯` is 23 UTF-16 code units
185
+ * either way, but shrinks from 31 UTF-8 bytes to 23). C++ sidesteps this
186
+ * because UE macro tokens are ASCII-only; a Swift directive line can carry any
187
+ * trailing comment. Per the `LanguageProvider.preprocessSource` contract this is
188
+ * safe only while no consumer slices the original UTF-8 bytes by `startIndex`:
189
+ * node-tree-sitter reports UTF-16 code-unit indices, and every in-process
190
+ * consumer slices the JS string, whose `.length` *is* preserved.
191
+ *
192
+ * Must stay pure and idempotent β€” see `LanguageProvider.preprocessSource`.
193
+ */
194
+ function preprocessSwiftConditionalDirectives(sourceText) {
195
+ if (!HAS_CONDITIONAL_DIRECTIVE_HINT.test(sourceText))
196
+ return sourceText;
197
+ // Alternating [line, terminator, line, terminator, …, line]; joining it back
198
+ // reproduces the input byte for byte, including bare-`\r` endings.
199
+ const parts = sourceText.split(/(\r\n|\n|\r)/);
200
+ const state = {
201
+ blockCommentDepth: 0,
202
+ multilineStringPounds: null,
203
+ braceDepth: 0,
204
+ };
205
+ const openGroups = [];
206
+ let blankedAny = false;
207
+ for (let index = 0; index < parts.length; index += 2) {
208
+ const text = parts[index];
209
+ const insideLiteralOrComment = state.multilineStringPounds !== null || state.blockCommentDepth > 0;
210
+ const match = insideLiteralOrComment ? null : SWIFT_CONDITIONAL_DIRECTIVE_RE.exec(text);
211
+ const braceDepthAtStart = state.braceDepth;
212
+ scanSwiftLine(text, state);
213
+ const braceDelta = state.braceDepth - braceDepthAtStart;
214
+ const openGroup = openGroups[openGroups.length - 1];
215
+ if (match === null) {
216
+ if (openGroup !== undefined)
217
+ openGroup.currentBranchDelta += braceDelta;
218
+ continue;
219
+ }
220
+ // Directive lines are blanked as a unit, so their own braces (if any) never
221
+ // reach the parser and must not count toward a branch's balance.
222
+ if (match[1] === 'if') {
223
+ openGroups.push({
224
+ braceDepthAtStart,
225
+ directiveLines: [index],
226
+ totalDelta: 0,
227
+ allBranchesBalanced: true,
228
+ currentBranchDelta: 0,
229
+ });
230
+ continue;
231
+ }
232
+ // A `#else`/`#endif` with no open `#if` is malformed source β€” leave it be.
233
+ if (openGroup === undefined)
234
+ continue;
235
+ openGroup.directiveLines.push(index);
236
+ openGroup.totalDelta += openGroup.currentBranchDelta;
237
+ openGroup.allBranchesBalanced &&= openGroup.currentBranchDelta === 0;
238
+ openGroup.currentBranchDelta = 0;
239
+ if (match[1] !== 'endif')
240
+ continue;
241
+ openGroups.pop();
242
+ const parentGroup = openGroups[openGroups.length - 1];
243
+ // Every branch survives preprocessing, so the enclosing branch sees the sum
244
+ // β€” not one branch's delta.
245
+ if (parentGroup !== undefined)
246
+ parentGroup.currentBranchDelta += openGroup.totalDelta;
247
+ if (openGroup.braceDepthAtStart > 0 && openGroup.allBranchesBalanced) {
248
+ // Safe to mutate in place: every line of this group has already been
249
+ // scanned, and the decision never reopens.
250
+ for (const line of openGroup.directiveLines)
251
+ parts[line] = ' '.repeat(parts[line].length);
252
+ blankedAny = true;
253
+ }
254
+ }
255
+ return blankedAny ? parts.join('') : sourceText;
256
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Swift same-module implicit IMPORTS-edge emission for the
4
+ * `emitImplicitImportEdges` hook.
5
+ *
6
+ * Swift gives every file in a module (an SPM target) visibility of every
7
+ * other file's top-level declarations WITHOUT any `import` statement
8
+ * (whole-module visibility). The legacy DAG models this with File→File
9
+ * IMPORTS edges via `wireSwiftImplicitImports`; under registry-primary
10
+ * that wirer's `addImportEdge` is gated off, and the scope-resolution
11
+ * import pipeline (`emitImportEdges`) only materializes edges from
12
+ * finalized `ImportEdge`s β€” of which there are none here, because there
13
+ * is no syntactic `import`. This hook emits the missing edges directly.
14
+ *
15
+ * Module identity: Swift has no in-source `package X` marker. Module
16
+ * membership is the SPM target *subtree* (`Sources/<Target>/…`), threaded
17
+ * in via the SPM target map (`resolutionConfig` β†’ `coerceSwiftTargets`)
18
+ * and grouped by `groupSwiftFilesBySpmTarget` β€” replicating legacy
19
+ * `groupSwiftFilesByTarget`. With no scanned source dir the map is null
20
+ * and all files form one `__default__` module (single-Xcode-project
21
+ * assumption). Every pair of distinct `.swift` files in the same module
22
+ * gets a directed IMPORTS edge in both directions (whole-module
23
+ * visibility is symmetric).
24
+ *
25
+ * Node identity + edge construction mirror the generic `emitImportEdges`
26
+ * convention (`graph-bridge/imports-to-edges.ts`): `generateId('File', path)`
27
+ * for endpoints and `generateId('IMPORTS', key)` for the relationship id,
28
+ * deduped by `(sourceFile -> targetFile)`. Re-invocation idempotency comes
29
+ * from `graph.addRelationship` id-dedup (the same `IMPORTS` id is produced
30
+ * for a given ordered pair), so no local `seen` set is needed.
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.emitSwiftImplicitImportEdges = emitSwiftImplicitImportEdges;
34
+ const utils_js_1 = require("../../../../lib/utils.js");
35
+ const target_grouping_js_1 = require("./target-grouping.js");
36
+ function emitSwiftImplicitImportEdges(graph, parsedFiles, _nodeLookup, resolutionConfig) {
37
+ // Group files by SPM target subtree (the module). No-source-dir β†’ all
38
+ // files in one `__default__` bucket.
39
+ const targets = (0, target_grouping_js_1.coerceSwiftTargets)(resolutionConfig);
40
+ const filesByTarget = (0, target_grouping_js_1.groupSwiftFilesBySpmTarget)(parsedFiles, (parsed) => parsed.filePath, targets);
41
+ for (const [, group] of filesByTarget) {
42
+ if (group.length < 2)
43
+ continue; // no siblings to import
44
+ for (const source of group) {
45
+ for (const target of group) {
46
+ if (source.filePath === target.filePath)
47
+ continue; // no self-import
48
+ const dedupKey = `${source.filePath}->${target.filePath}`;
49
+ graph.addRelationship({
50
+ id: (0, utils_js_1.generateId)('IMPORTS', dedupKey),
51
+ sourceId: (0, utils_js_1.generateId)('File', source.filePath),
52
+ targetId: (0, utils_js_1.generateId)('File', target.filePath),
53
+ type: 'IMPORTS',
54
+ confidence: 1.0,
55
+ reason: 'swift-scope: implicit module visibility',
56
+ });
57
+ }
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Decompose a Swift `import_declaration` into a `CaptureMatch` carrying
4
+ * the synthesized markers `@import.kind` / `@import.source` /
5
+ * `@import.name` / `@import.testable` that `interpretSwiftImport`
6
+ * consumes.
7
+ *
8
+ * Swift imports are whole-module (no named members), so this is 1:1 β€”
9
+ * one `import` produces exactly one import. The split layer exposes the
10
+ * module name and the `@testable` flag without pushing raw-text parsing
11
+ * into `interpret.ts`.
12
+ *
13
+ * import Foundation β†’ kind=namespace, source=Foundation
14
+ * import Foo.Bar β†’ kind=namespace, source=Foo (SPM target),
15
+ * name=Foo.Bar (full path, for reference)
16
+ * @testable import MyApp β†’ kind=namespace, source=MyApp, testable=1
17
+ *
18
+ * Verified against tree-sitter-swift 0.7.1:
19
+ * (import_declaration
20
+ * (modifiers (attribute (user_type (type_identifier))))? ; @testable / @_exported
21
+ * (identifier (simple_identifier)+)) ; one per dotted segment
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.splitSwiftImport = splitSwiftImport;
25
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
26
+ function splitSwiftImport(stmtNode) {
27
+ if (stmtNode.type !== 'import_declaration')
28
+ return null;
29
+ const spec = parseSwiftImport(stmtNode);
30
+ if (spec === null)
31
+ return null;
32
+ return buildImportMatch(stmtNode, spec);
33
+ }
34
+ function parseSwiftImport(node) {
35
+ let testable = false;
36
+ let identifierNode = null;
37
+ for (let i = 0; i < node.namedChildCount; i++) {
38
+ const child = node.namedChild(i);
39
+ if (child === null)
40
+ continue;
41
+ if (child.type === 'modifiers') {
42
+ // Any attribute whose text mentions `testable` flips the flag.
43
+ if (/\btestable\b/.test(child.text))
44
+ testable = true;
45
+ }
46
+ else if (child.type === 'identifier') {
47
+ identifierNode = child;
48
+ }
49
+ }
50
+ if (identifierNode === null)
51
+ return null;
52
+ // The module path is one or more simple_identifier children, one per
53
+ // dotted segment. The SPM target is the FIRST segment.
54
+ const segments = [];
55
+ for (let i = 0; i < identifierNode.namedChildCount; i++) {
56
+ const seg = identifierNode.namedChild(i);
57
+ if (seg !== null && seg.type === 'simple_identifier')
58
+ segments.push(seg.text);
59
+ }
60
+ if (segments.length === 0) {
61
+ // Fall back to the raw identifier text (e.g. a grammar shape we didn't
62
+ // anticipate). Split on `.` to recover the target segment.
63
+ const raw = identifierNode.text.trim();
64
+ if (raw === '')
65
+ return null;
66
+ const parts = raw.split('.');
67
+ return { source: parts[0], fullPath: raw, testable, atNode: node };
68
+ }
69
+ return {
70
+ source: segments[0],
71
+ fullPath: segments.join('.'),
72
+ testable,
73
+ atNode: node,
74
+ };
75
+ }
76
+ function buildImportMatch(stmtNode, spec) {
77
+ const m = {
78
+ '@import.statement': (0, ast_helpers_js_1.nodeToCapture)('@import.statement', stmtNode),
79
+ '@import.kind': (0, ast_helpers_js_1.syntheticCapture)('@import.kind', spec.atNode, 'namespace'),
80
+ '@import.source': (0, ast_helpers_js_1.syntheticCapture)('@import.source', spec.atNode, spec.source),
81
+ '@import.name': (0, ast_helpers_js_1.syntheticCapture)('@import.name', spec.atNode, spec.fullPath),
82
+ };
83
+ if (spec.testable) {
84
+ m['@import.testable'] = (0, ast_helpers_js_1.syntheticCapture)('@import.testable', spec.atNode, '1');
85
+ }
86
+ return m;
87
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * `resolveImportTarget` adapter for the Swift `ScopeResolver`.
4
+ *
5
+ * Swift's `import ModuleName` brings in a whole SPM target / framework
6
+ * module. The scope-resolution contract passes only `allFilePaths` (no
7
+ * `SwiftPackageConfig`), so we resolve a module name to the `.swift`
8
+ * files under a directory segment named after the module β€” the SPM
9
+ * convention `Sources/<Module>/*.swift` (and the common
10
+ * `<Module>/*.swift` layout). This needs no manifest parsing.
11
+ *
12
+ * Same-module (intra-target) visibility β€” the bulk of Swift cross-file
13
+ * resolution, which needs NO `import` statement β€” is handled separately
14
+ * by `populateSwiftTargetSiblings` (see `target-siblings.ts`). This
15
+ * adapter only resolves EXPLICIT `import` statements (cross-module).
16
+ *
17
+ * Returns all matching files (one ImportEdge per file, like Go's
18
+ * package resolver) so every exported symbol in the module materializes
19
+ * a binding. Returns `null` for external frameworks (Foundation, UIKit,
20
+ * …) that have no in-repo directory.
21
+ *
22
+ * Performance: the directory→files grouping is memoized on the stable
23
+ * `allFilePaths` Set identity (the same Set is threaded to every import
24
+ * in a run), so it is built once per run β€” NOT once per import. Mirrors
25
+ * Python's `getPythonFileIndex` WeakMap pattern (PR #1918).
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.resolveSwiftImportTarget = resolveSwiftImportTarget;
29
+ const SWIFT_MODULE_INDEX_CACHE = new WeakMap();
30
+ function getSwiftModuleIndex(allFilePaths) {
31
+ const cached = SWIFT_MODULE_INDEX_CACHE.get(allFilePaths);
32
+ if (cached !== undefined)
33
+ return cached;
34
+ const byModule = new Map();
35
+ for (const raw of allFilePaths) {
36
+ const norm = raw.replace(/\\/g, '/');
37
+ if (!norm.endsWith('.swift'))
38
+ continue;
39
+ // Each interior directory segment is a candidate module name. A file
40
+ // `Sources/Models/User.swift` is attributed to module `Sources` and
41
+ // module `Models`; an `import Models` then resolves to it.
42
+ const segments = norm.split('/');
43
+ // Drop the filename (last segment); the rest are directory segments.
44
+ for (let i = 0; i < segments.length - 1; i++) {
45
+ const seg = segments[i];
46
+ if (seg === '')
47
+ continue;
48
+ let bucket = byModule.get(seg);
49
+ if (bucket === undefined) {
50
+ bucket = [];
51
+ byModule.set(seg, bucket);
52
+ }
53
+ bucket.push(raw);
54
+ }
55
+ }
56
+ const index = { byModule };
57
+ SWIFT_MODULE_INDEX_CACHE.set(allFilePaths, index);
58
+ return index;
59
+ }
60
+ function resolveSwiftImportTarget(parsedImport, workspaceIndex) {
61
+ const ctx = workspaceIndex;
62
+ // Duck-type the set (PR #1918 P2: don't `instanceof Set`).
63
+ const allFilePaths = ctx?.allFilePaths;
64
+ if (ctx === undefined ||
65
+ typeof ctx.fromFile !== 'string' ||
66
+ typeof allFilePaths?.has !== 'function' ||
67
+ typeof allFilePaths?.[Symbol.iterator] !== 'function') {
68
+ return null;
69
+ }
70
+ // Swift import target is the SPM module name (first dotted segment).
71
+ const targetRaw = parsedImport.targetRaw;
72
+ if (targetRaw === null || targetRaw === '')
73
+ return null;
74
+ const moduleName = targetRaw.split('.')[0];
75
+ if (moduleName === '')
76
+ return null;
77
+ const index = getSwiftModuleIndex(ctx.allFilePaths);
78
+ const files = index.byModule.get(moduleName);
79
+ if (files === undefined || files.length === 0)
80
+ return null; // external framework
81
+ // Exclude the importer itself (a file under `Foo/` importing `Foo`).
82
+ const out = files.filter((f) => f !== ctx.fromFile);
83
+ return out.length > 0 ? out : null;
84
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Swift scope-resolution hooks (RFC #909 Ring 3, issue #937 β€” the final
4
+ * per-language migration).
5
+ *
6
+ * Public API barrel. Consumers import from this file rather than the
7
+ * individual modules.
8
+ *
9
+ * Module layout (each file is a single concern):
10
+ *
11
+ * - `query.ts` β€” tree-sitter query + lazy parser/query singletons
12
+ * - `captures.ts` β€” `emitSwiftScopeCaptures` orchestrator
13
+ * - `import-decomposer.ts` β€” each `import` β†’ ParsedImport-shaped captures
14
+ * - `interpret.ts` β€” capture-match β†’ `ParsedImport` / `ParsedTypeBinding`
15
+ * - `simple-hooks.ts` β€” small/no-op hooks made explicit
16
+ * - `receiver-binding.ts` β€” synthesize `self` / `super` type-bindings
17
+ * - `merge-bindings.ts` β€” Swift import-vs-local precedence
18
+ * - `arity.ts` β€” Swift arity compatibility (count-primary)
19
+ * - `arity-metadata.ts` β€” synthesize arity metadata from declarations
20
+ * - `import-target.ts` β€” `(ParsedImport, WorkspaceIndex) β†’ file path` adapter
21
+ * - `target-grouping.ts` β€” group same-module files by SPM target subtree
22
+ * - `target-siblings.ts` β€” same-SPM-target implicit cross-file visibility
23
+ * - `implicit-imports.ts` — same-SPM-target File→File IMPORTS edges
24
+ * - `sibling-type-bindings.ts` β€” mirror sibling return-type typeBindings
25
+ * - `scope-resolver.ts` β€” `ScopeResolver` registered in `SCOPE_RESOLVERS`
26
+ * - `cache-stats.ts` β€” PROF_SCOPE_RESOLUTION cache hit/miss counters
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.swiftReceiverBinding = exports.swiftImportOwningScope = exports.swiftBindingScopeFor = exports.mirrorSwiftSiblingTypeBindings = exports.emitSwiftImplicitImportEdges = exports.populateSwiftTargetSiblings = exports.coerceSwiftTargets = exports.groupSwiftFilesBySpmTarget = exports.resolveSwiftImportTarget = exports.swiftArityCompatibility = exports.swiftMergeBindings = exports.interpretSwiftTypeBinding = exports.interpretSwiftImport = exports.resetSwiftCaptureCacheStats = exports.getSwiftCaptureCacheStats = exports.emitSwiftScopeCaptures = void 0;
30
+ var captures_js_1 = require("./captures.js");
31
+ Object.defineProperty(exports, "emitSwiftScopeCaptures", { enumerable: true, get: function () { return captures_js_1.emitSwiftScopeCaptures; } });
32
+ var cache_stats_js_1 = require("./cache-stats.js");
33
+ Object.defineProperty(exports, "getSwiftCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.getSwiftCaptureCacheStats; } });
34
+ Object.defineProperty(exports, "resetSwiftCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.resetSwiftCaptureCacheStats; } });
35
+ var interpret_js_1 = require("./interpret.js");
36
+ Object.defineProperty(exports, "interpretSwiftImport", { enumerable: true, get: function () { return interpret_js_1.interpretSwiftImport; } });
37
+ Object.defineProperty(exports, "interpretSwiftTypeBinding", { enumerable: true, get: function () { return interpret_js_1.interpretSwiftTypeBinding; } });
38
+ var merge_bindings_js_1 = require("./merge-bindings.js");
39
+ Object.defineProperty(exports, "swiftMergeBindings", { enumerable: true, get: function () { return merge_bindings_js_1.swiftMergeBindings; } });
40
+ var arity_js_1 = require("./arity.js");
41
+ Object.defineProperty(exports, "swiftArityCompatibility", { enumerable: true, get: function () { return arity_js_1.swiftArityCompatibility; } });
42
+ var import_target_js_1 = require("./import-target.js");
43
+ Object.defineProperty(exports, "resolveSwiftImportTarget", { enumerable: true, get: function () { return import_target_js_1.resolveSwiftImportTarget; } });
44
+ var target_grouping_js_1 = require("./target-grouping.js");
45
+ Object.defineProperty(exports, "groupSwiftFilesBySpmTarget", { enumerable: true, get: function () { return target_grouping_js_1.groupSwiftFilesBySpmTarget; } });
46
+ Object.defineProperty(exports, "coerceSwiftTargets", { enumerable: true, get: function () { return target_grouping_js_1.coerceSwiftTargets; } });
47
+ var target_siblings_js_1 = require("./target-siblings.js");
48
+ Object.defineProperty(exports, "populateSwiftTargetSiblings", { enumerable: true, get: function () { return target_siblings_js_1.populateSwiftTargetSiblings; } });
49
+ var implicit_imports_js_1 = require("./implicit-imports.js");
50
+ Object.defineProperty(exports, "emitSwiftImplicitImportEdges", { enumerable: true, get: function () { return implicit_imports_js_1.emitSwiftImplicitImportEdges; } });
51
+ var sibling_type_bindings_js_1 = require("./sibling-type-bindings.js");
52
+ Object.defineProperty(exports, "mirrorSwiftSiblingTypeBindings", { enumerable: true, get: function () { return sibling_type_bindings_js_1.mirrorSwiftSiblingTypeBindings; } });
53
+ var simple_hooks_js_1 = require("./simple-hooks.js");
54
+ Object.defineProperty(exports, "swiftBindingScopeFor", { enumerable: true, get: function () { return simple_hooks_js_1.swiftBindingScopeFor; } });
55
+ Object.defineProperty(exports, "swiftImportOwningScope", { enumerable: true, get: function () { return simple_hooks_js_1.swiftImportOwningScope; } });
56
+ Object.defineProperty(exports, "swiftReceiverBinding", { enumerable: true, get: function () { return simple_hooks_js_1.swiftReceiverBinding; } });
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Capture-match β†’ semantic-shape interpreters for Swift.
4
+ *
5
+ * - `interpretSwiftImport` β†’ `ParsedImport`
6
+ * - `interpretSwiftTypeBinding` β†’ `ParsedTypeBinding`
7
+ *
8
+ * Import matches arrive pre-decomposed by `emitSwiftScopeCaptures` (one
9
+ * import per match, with synthesized `@import.kind/source/name` markers
10
+ * and an optional `@import.testable` flag). Type-binding matches arrive
11
+ * from the raw query captures β€” each `@type-binding.*` anchor carries
12
+ * `@type-binding.name` + `@type-binding.type`.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.interpretSwiftImport = interpretSwiftImport;
16
+ exports.interpretSwiftTypeBinding = interpretSwiftTypeBinding;
17
+ // ─── interpretImport ──────────────────────────────────────────────────────
18
+ function interpretSwiftImport(captures) {
19
+ const sourceCap = captures['@import.source'];
20
+ if (sourceCap === undefined)
21
+ return null;
22
+ // Swift imports are whole-module (wildcard semantics): `import Foundation`
23
+ // brings the entire module into scope, no named members. The SPM target
24
+ // (first dotted segment) is the resolution target; the full path is kept
25
+ // as importedName for reference. `@testable` resolves identically to a
26
+ // plain import (same module is visible in test scope).
27
+ const source = sourceCap.text;
28
+ const fullPath = captures['@import.name']?.text ?? source;
29
+ return {
30
+ kind: 'namespace',
31
+ localName: source,
32
+ importedName: fullPath,
33
+ targetRaw: source,
34
+ };
35
+ }
36
+ // ─── interpretTypeBinding ─────────────────────────────────────────────────
37
+ function interpretSwiftTypeBinding(captures) {
38
+ const nameCap = captures['@type-binding.name'];
39
+ const typeCap = captures['@type-binding.type'];
40
+ if (nameCap === undefined || typeCap === undefined)
41
+ return null;
42
+ // Normalize so receiver-typed resolution treats these identically:
43
+ // `User?` / `User!` β†’ User (optional / IUO)
44
+ // `[User]` β†’ User (array sugar)
45
+ // `Array<User>` / `Optional<User>` β†’ User (single-arg generic)
46
+ // `Foundation.URL` β†’ URL (qualifier)
47
+ const rawType = stripQualifier(stripGeneric(stripArraySugar(stripOptional(typeCap.text.trim()))));
48
+ let source = 'parameter-annotation';
49
+ if (captures['@type-binding.self'] !== undefined)
50
+ source = 'self';
51
+ else if (captures['@type-binding.constructor'] !== undefined)
52
+ source = 'constructor-inferred';
53
+ else if (captures['@type-binding.annotation'] !== undefined)
54
+ source = 'annotation';
55
+ else if (captures['@type-binding.alias'] !== undefined)
56
+ source = 'assignment-inferred';
57
+ else if (captures['@type-binding.return'] !== undefined)
58
+ source = 'return-annotation';
59
+ return { boundName: nameCap.text, rawTypeName: rawType, source };
60
+ }
61
+ /** `User?` / `User!` β†’ `User`. */
62
+ function stripOptional(text) {
63
+ if (text.endsWith('?') || text.endsWith('!'))
64
+ return text.slice(0, -1).trim();
65
+ return text;
66
+ }
67
+ /** `[User]` β†’ `User` (array sugar). `[K: V]` (dictionary) is left alone β€”
68
+ * element semantics aren't unambiguous. */
69
+ function stripArraySugar(text) {
70
+ if (text.startsWith('[') && text.endsWith(']') && !text.includes(':')) {
71
+ return text.slice(1, -1).trim();
72
+ }
73
+ return text;
74
+ }
75
+ /**
76
+ * Unwrap a single-arg generic collection wrapper β€” `Array<User>`,
77
+ * `Optional<User>`, `Set<User>` β€” to its element type. Mirrors C#'s
78
+ * `stripGeneric`. Multi-arg generics (`Dictionary<K, V>`,
79
+ * `Result<T, E>`) are left alone.
80
+ */
81
+ function stripGeneric(text) {
82
+ const single = text.match(/^(?:[A-Za-z_][A-Za-z0-9_.]*\.)?(?:Array|Optional|Set|ContiguousArray|ArraySlice)<([^,<>]+)>$/);
83
+ if (single !== null)
84
+ return single[1].trim();
85
+ return text;
86
+ }
87
+ /** `Foundation.URL` β†’ `URL`. */
88
+ function stripQualifier(text) {
89
+ const lastDot = text.lastIndexOf('.');
90
+ if (lastDot === -1)
91
+ return text;
92
+ return text.slice(lastDot + 1);
93
+ }