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.
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ScopeResolver` — the per-language contract consumed by the generic
|
|
4
|
+
* scope-resolution orchestrator (`runScopeResolution`).
|
|
5
|
+
*
|
|
6
|
+
* ## Migration cookbook (next language)
|
|
7
|
+
*
|
|
8
|
+
* To add a language to the registry-primary path:
|
|
9
|
+
*
|
|
10
|
+
* 1. Implement `ScopeResolver` in
|
|
11
|
+
* `cgraph/src/core/ingestion/languages/<lang>/scope-resolver.ts`.
|
|
12
|
+
* Nine required fields (language, languageProvider,
|
|
13
|
+
* importEdgeReason, resolveImportTarget, mergeBindings,
|
|
14
|
+
* arityCompatibility, buildMro, populateOwners, isSuperReceiver)
|
|
15
|
+
* plus optional toggles / hooks:
|
|
16
|
+
* - propagatesReturnTypesAcrossImports (default true)
|
|
17
|
+
* - fieldFallbackOnMethodLookup (default true — turn OFF for
|
|
18
|
+
* statically-typed languages; the heuristic over-connects)
|
|
19
|
+
* - elementTypeOf — container element type, by subscript or accessor
|
|
20
|
+
* - collapseMemberCallsByCallerTarget — one edge per caller/target
|
|
21
|
+
* - populateNamespaceSiblings — cross-file implicit visibility
|
|
22
|
+
* - hoistTypeBindingsToModule — enable ONLY when method return
|
|
23
|
+
* types are stored on the enclosing Module scope; most
|
|
24
|
+
* languages attach them to the class scope and leave this off
|
|
25
|
+
* 2. Export a thin entry point:
|
|
26
|
+
* `runYourLangScopeResolution(input) = runScopeResolution(input, yourScopeResolver)`.
|
|
27
|
+
* 3. Register the provider in
|
|
28
|
+
* `cgraph/src/core/ingestion/scope-resolution/pipeline/registry.ts`
|
|
29
|
+
* (the `SCOPE_RESOLVERS` map). That registration is all it takes — the
|
|
30
|
+
* `scopeResolutionPhase` runs every registered resolver.
|
|
31
|
+
* 4. Verify the resolver integration test at
|
|
32
|
+
* `cgraph/test/integration/resolvers/<lang>.test.ts` passes (it runs
|
|
33
|
+
* in the standard test suite). Scope-resolution is the only resolution
|
|
34
|
+
* path — the legacy call-resolution DAG was removed in RING4-1 #942.
|
|
35
|
+
*
|
|
36
|
+
* No new pipeline phase, no orchestrator copy-paste, no workflow
|
|
37
|
+
* change. The generic `scopeResolutionPhase` auto-discovers everything via
|
|
38
|
+
* the `SCOPE_RESOLVERS` map.
|
|
39
|
+
*
|
|
40
|
+
* ## ScopeResolver vs LanguageProvider
|
|
41
|
+
*
|
|
42
|
+
* The codebase has two provider contracts. Their lifecycles differ:
|
|
43
|
+
*
|
|
44
|
+
* - `LanguageProvider` (`language-provider.ts`) is the
|
|
45
|
+
* **parsing-side** contract — how to emit captures, classify
|
|
46
|
+
* scopes, interpret imports / typeBindings. ~40 fields covering
|
|
47
|
+
* both legacy and new pipelines. Consumed by `ScopeExtractor`,
|
|
48
|
+
* once per file at extract time.
|
|
49
|
+
* - `ScopeResolver` (this file) is the **emit-side** contract — how
|
|
50
|
+
* the resolution pipeline dispatches references to graph edges.
|
|
51
|
+
* 8 fields total. Consumed by `runScopeResolution`, once per
|
|
52
|
+
* workspace at resolve time.
|
|
53
|
+
*
|
|
54
|
+
* They share three concept names (`arityCompatibility`, `mergeBindings`,
|
|
55
|
+
* `resolveImportTarget`) because the emit pipeline reuses a few
|
|
56
|
+
* finalize hooks. Per-language wiring passes the SAME function
|
|
57
|
+
* reference through both interfaces — no second copy of the logic.
|
|
58
|
+
* Rationale for not collapsing: lifecycle separation, and merging
|
|
59
|
+
* would create a god-interface complicating future migrations.
|
|
60
|
+
*
|
|
61
|
+
* ## Reference implementation
|
|
62
|
+
*
|
|
63
|
+
* `cgraph/src/core/ingestion/languages/python/scope-resolver.ts` —
|
|
64
|
+
* `pythonScopeResolver` is the canonical example. Read that file when
|
|
65
|
+
* migrating a new language; this interface lists the fields that
|
|
66
|
+
* implementation populates.
|
|
67
|
+
*
|
|
68
|
+
* ## Contract Invariants the orchestrator depends on
|
|
69
|
+
*
|
|
70
|
+
* These are non-obvious behaviors that the orchestrator and the
|
|
71
|
+
* existing Python + C# resolvers depend on. Future implementers will
|
|
72
|
+
* break them silently if not documented.
|
|
73
|
+
*
|
|
74
|
+
* - **I1 — Phase 4 emission order is load-bearing.** `emitReceiverBoundCalls`
|
|
75
|
+
* runs FIRST (populates `handledSites`), then `emitFreeCallFallback`,
|
|
76
|
+
* then `emitReferencesViaLookup` (consumes `handledSites` as a skip
|
|
77
|
+
* set), then `emitImportEdges`. Reordering breaks same-name collision
|
|
78
|
+
* resolution: the shared lookup can mis-resolve `app_metrics.get_metrics()`
|
|
79
|
+
* to a same-named local function, and only the precise per-receiver
|
|
80
|
+
* pass running first prevents the wrong edge.
|
|
81
|
+
*
|
|
82
|
+
* - **I2 — `handledSites` semantics.** A site is added to
|
|
83
|
+
* `handledSites` IFF a `tryEmitEdge` call returned `true` for it.
|
|
84
|
+
* Sites a pass touched but couldn't resolve do NOT get marked —
|
|
85
|
+
* they still get a chance from the shared resolver. Exception:
|
|
86
|
+
* the free-call fallback marks the site unconditionally after
|
|
87
|
+
* attempting emission (even on dedup-collapse), because the
|
|
88
|
+
* per-(caller, target) collapse semantics require multiple call
|
|
89
|
+
* sites in the same caller body not produce multiple edges.
|
|
90
|
+
* `preEmitInheritanceEdges` also pre-marks every `inherits` site so
|
|
91
|
+
* the generic bridge cannot remap class heritage into method-owned
|
|
92
|
+
* EXTENDS edges via `resolveCallerGraphId`.
|
|
93
|
+
*
|
|
94
|
+
* - **I3 — `propagateImportedReturnTypes` mutation timing + ordering.**
|
|
95
|
+
* The pass mutates `Scope.typeBindings` (a plain `new Map(...)` from
|
|
96
|
+
* `draftToScope`, NOT frozen). It MUST run AFTER `finalizeScopeModel`
|
|
97
|
+
* (so `indexes.bindings` is populated) and BEFORE
|
|
98
|
+
* `resolveReferenceSites` (so resolution sees the propagated types).
|
|
99
|
+
* The pass also re-runs `followChainPostFinalize` on every scope's
|
|
100
|
+
* typeBindings because scope-extractor's pass-4 already ran and
|
|
101
|
+
* missed any chain whose terminal lives in a foreign file.
|
|
102
|
+
* Within the pass, files are walked in `indexes.sccs` reverse-
|
|
103
|
+
* topological order (leaves first) so multi-hop alias chains
|
|
104
|
+
* (e.g. `models.User → service.user → app.user`) collapse to the
|
|
105
|
+
* terminal class in a single pass — every importer sees its
|
|
106
|
+
* source's already-chain-followed typeBindings. Cyclic SCCs reach
|
|
107
|
+
* a partial fixpoint within a single pass without iterating to
|
|
108
|
+
* convergence; `ts-circular` only asserts pipeline-no-throw.
|
|
109
|
+
*
|
|
110
|
+
* - **I4 — `emitReceiverBoundCalls` case order.** Cases are evaluated
|
|
111
|
+
* in this order; the FIRST that emits an edge wins:
|
|
112
|
+
* 1. super branch (`provider.isSuperReceiver(receiverName)`)
|
|
113
|
+
* 2. Case 0 compound (`receiverName` has `.` or `(`)
|
|
114
|
+
* 3. Case 0.5 implicit-`this` chain walk — GATED: fires only for
|
|
115
|
+
* languages that set `resolveThisViaEnclosingClass === true`;
|
|
116
|
+
* it intercepts every bare-`this` call/read/write site ahead of
|
|
117
|
+
* Case 4 and does NOT emit the interface-dispatch fan-out that
|
|
118
|
+
* Cases 0, 3b and 4 all perform (Case 0 gained it in #2829 and
|
|
119
|
+
* Case 3b in #2832, leaving 0.5 the only INSTANCE-receiver case
|
|
120
|
+
* that folds or walks to a receiver type without fanning out.
|
|
121
|
+
* Read that narrowly: Case 2 also walks an MRO and its binding
|
|
122
|
+
* admits `Interface`, but its receiver IS the type name, so the
|
|
123
|
+
* site is static dispatch and a fan-out would be wrong; Cases 3
|
|
124
|
+
* and 5 resolve by direct lookup rather than a fold or MRO walk,
|
|
125
|
+
* and no language is known to reach Case 3 with an Interface —
|
|
126
|
+
* every one that could strips the namespace qualifier first,
|
|
127
|
+
* sending it to Case 4), so enabling the toggle
|
|
128
|
+
* for a language changes that language's `this` dispatch
|
|
129
|
+
* semantics (see the toggle's doc below)
|
|
130
|
+
* 4. Case 1 namespace-receiver
|
|
131
|
+
* 5. Case 2 class-name receiver
|
|
132
|
+
* 6. Case 3 dotted typeBinding for namespace prefix
|
|
133
|
+
* 7. Case 3b chain-typebinding (compound resolver + interface-dispatch
|
|
134
|
+
* fan-out on an Interface fold, #2832)
|
|
135
|
+
* 8. Case 4 simple typeBinding (MRO walk + findOwnedMember)
|
|
136
|
+
* Reordering or merging cases changes resolution semantics. The
|
|
137
|
+
* numbering is part of the contract — keep the comments.
|
|
138
|
+
*
|
|
139
|
+
* - **I5 — Pre-seeding `seen` from `referenceIndex` is forbidden.**
|
|
140
|
+
* Earlier versions of the receiver-bound pass pre-populated `seen`
|
|
141
|
+
* to avoid double-emit. After Phase 4 was reordered, pre-seeding
|
|
142
|
+
* became actively harmful: it suppresses correct emissions for
|
|
143
|
+
* sites the shared resolver happened to resolve to a wrong target.
|
|
144
|
+
* The orchestrator MUST NOT pre-seed.
|
|
145
|
+
*
|
|
146
|
+
* - **I6 — `Scope.typeBindings` is mutable post-finalize.** `draftToScope`
|
|
147
|
+
* (in `scope-extractor.ts`) builds `typeBindings` as a plain
|
|
148
|
+
* `new Map(...)` — not frozen, intentionally. Passes below rely on
|
|
149
|
+
* this. Do NOT freeze `typeBindings` in any downstream refactor.
|
|
150
|
+
*
|
|
151
|
+
* - **I7 — `ScopeResolver` and `LanguageProvider` are distinct contracts.**
|
|
152
|
+
* Python and C# pass the SAME function reference through both
|
|
153
|
+
* interfaces where they share a hook name — no second copy of the
|
|
154
|
+
* logic. Rationale for not collapsing them: lifecycles differ
|
|
155
|
+
* (parsing-side runs once per file at extract time, emit-side runs
|
|
156
|
+
* once per workspace at resolve time), and merging would create a
|
|
157
|
+
* god-interface that complicates future migrations.
|
|
158
|
+
*
|
|
159
|
+
* - **I8 — Binding-channel lifecycle.** Post-finalize binding lookup
|
|
160
|
+
* fans across several channels (`lookupBindingsAt` /
|
|
161
|
+
* `findReceiverTypeBinding` consult them in precedence order):
|
|
162
|
+
* `indexes.bindings` (frozen finalize output), `Scope.bindings`
|
|
163
|
+
* (lexical local, first-tier shadowing), `indexes.bindingAugmentations`
|
|
164
|
+
* (per-scope append-only), `indexes.workspaceFqnBindings` +
|
|
165
|
+
* `indexes.workspaceTypeBindings` (scope-independent / global, consulted
|
|
166
|
+
* unconditionally), and `indexes.namespaceFqnBindings` +
|
|
167
|
+
* `indexes.namespaceTypeBindings` (per-namespace, consulted only for the
|
|
168
|
+
* namespaces in `indexes.accessibleNamespacesByScope` for the caller's
|
|
169
|
+
* module). All but `indexes.bindings` are mutable post-finalize and
|
|
170
|
+
* populated by hooks; only `indexes.bindings` is frozen.
|
|
171
|
+
*
|
|
172
|
+
* `indexes.bindings` is the **finalize-output channel**. After
|
|
173
|
+
* `finalizeScopeModel` returns, its inner `BindingRef[]` arrays
|
|
174
|
+
* are deep-frozen by `materializeBindings` and MUST NOT be
|
|
175
|
+
* mutated by any post-finalize hook. Treat `indexes.bindings` as
|
|
176
|
+
* immutable from the moment `finalizeScopeModel` returns.
|
|
177
|
+
*
|
|
178
|
+
* `indexes.bindingAugmentations` is the **post-finalize
|
|
179
|
+
* append-only channel**. Hooks like `populateNamespaceSiblings`
|
|
180
|
+
* append cross-file bindings synthesized after finalize (C#
|
|
181
|
+
* same-namespace visibility, `using static` member exposure)
|
|
182
|
+
* into this channel, NOT into `indexes.bindings`. Inner arrays
|
|
183
|
+
* here are NEVER frozen — hooks `push()` directly. Any consumer
|
|
184
|
+
* that reads post-finalize workspace bindings MUST query both
|
|
185
|
+
* index channels via `lookupBindingsAt`
|
|
186
|
+
* (`scope-resolution/scope/walkers.ts`); the helper returns
|
|
187
|
+
* finalized refs first, appends unique augmentation refs after,
|
|
188
|
+
* and dedupes by `def.nodeId` so finalized metadata wins on
|
|
189
|
+
* duplicate defs. Per-`Scope.bindings` local declarations are the
|
|
190
|
+
* lexical extraction channel and remain a separate first-tier
|
|
191
|
+
* lookup for local shadowing.
|
|
192
|
+
*
|
|
193
|
+
* `Scope.typeBindings` remains mutable post-finalize per I6 (it
|
|
194
|
+
* is intentionally not frozen at any point).
|
|
195
|
+
*
|
|
196
|
+
* The `ReadonlyMap<...>` types on `ScopeResolutionIndexes` are
|
|
197
|
+
* compile-time read-guidance for consumers; structural mutation
|
|
198
|
+
* of `bindingAugmentations` is performed via a deliberate
|
|
199
|
+
* `as Map<...>` cast inside the hook implementations and is the
|
|
200
|
+
* ONLY sanctioned channel for post-finalize binding fanout.
|
|
201
|
+
*
|
|
202
|
+
* The dev-mode runtime validator
|
|
203
|
+
* (`validateBindingsImmutability` in
|
|
204
|
+
* `scope-resolution/validate-bindings-immutability.ts`) surfaces
|
|
205
|
+
* any drift — i.e. a hook writing to `indexes.bindings` instead
|
|
206
|
+
* of `bindingAugmentations`, or producing a non-frozen finalized
|
|
207
|
+
* bucket — via `onWarn` when explicitly enabled by
|
|
208
|
+
* `NODE_ENV === 'development' || VALIDATE_SEMANTIC_MODEL === '1'`
|
|
209
|
+
* (`VALIDATE_SEMANTIC_MODEL=0` is an explicit off switch).
|
|
210
|
+
*
|
|
211
|
+
* - **I9 — `SemanticModel` is the single authoritative symbol store.**
|
|
212
|
+
* Every symbol-indexed lookup (key = `nodeId | simpleName |
|
|
213
|
+
* qualifiedName | filePath`) resolves through
|
|
214
|
+
* `SemanticModel.{symbols,types,methods,fields}`. Scope-resolution
|
|
215
|
+
* passes MUST NOT maintain parallel owner-keyed or name-keyed
|
|
216
|
+
* symbol indexes — `WorkspaceResolutionIndex` is reserved for
|
|
217
|
+
* `Scope`-valued lookups that `SemanticModel` structurally cannot
|
|
218
|
+
* carry.
|
|
219
|
+
*
|
|
220
|
+
* The `runScopeResolution` orchestrator guarantees this invariant
|
|
221
|
+
* in two steps:
|
|
222
|
+
* 1. The legacy `parse` phase populates `SemanticModel` via
|
|
223
|
+
* `symbolTable.add(...)`. For languages whose extractor
|
|
224
|
+
* resolves `enclosingClassId` at parse time, class-body defs
|
|
225
|
+
* are correctly owner-keyed there.
|
|
226
|
+
* 2. The `reconcileOwnership` pass runs after
|
|
227
|
+
* `provider.populateOwners(parsed)` and registers any def in
|
|
228
|
+
* `parsed.localDefs[i]` with a corrected `ownerId` that the
|
|
229
|
+
* legacy pass missed (primarily Python class-body methods).
|
|
230
|
+
* Idempotent — duplicates are skipped by `nodeId`.
|
|
231
|
+
*
|
|
232
|
+
* Contract for consumers: `model` is `MutableSemanticModel` only
|
|
233
|
+
* during those two write phases. Downstream passes receive a
|
|
234
|
+
* narrowed `SemanticModel` (read-only) handle. This is enforced by
|
|
235
|
+
* `runScopeResolution`'s type-level narrowing at the phase
|
|
236
|
+
* boundary.
|
|
237
|
+
*
|
|
238
|
+
* The dev-mode runtime validator (`validateOwnershipParity`)
|
|
239
|
+
* surfaces any drift between `parsed.localDefs` ownership and the
|
|
240
|
+
* registries via `onWarn` when
|
|
241
|
+
* `NODE_ENV !== 'production' && VALIDATE_SEMANTIC_MODEL !== '0'`.
|
|
242
|
+
*
|
|
243
|
+
* This invariant is a **transitional shim**: the architectural
|
|
244
|
+
* end state is for every language's parse-time extractor to emit
|
|
245
|
+
* the correct `ownerId` directly, removing the need for
|
|
246
|
+
* reconciliation. Tracked as a follow-up; see ARCHITECTURE.md §
|
|
247
|
+
* "Semantic-model source of truth".
|
|
248
|
+
*
|
|
249
|
+
* ## Semantic-model source of truth
|
|
250
|
+
*
|
|
251
|
+
* `ParsedFile` (from `cgraph-shared/src/scope-resolution/parsed-file.ts`)
|
|
252
|
+
* is the single semantic model consumed by both the legacy DAG and the
|
|
253
|
+
* scope-resolution pipeline. Scope-resolution passes MUST NOT build a
|
|
254
|
+
* parallel parse representation; if a pass needs AST-level facts that
|
|
255
|
+
* `ParsedFile` doesn't expose, it should reuse the orchestrator's
|
|
256
|
+
* `treeCache` (see `RunScopeResolutionInput.treeCache`) rather than
|
|
257
|
+
* re-invoke `parser.parse(...)` on its own.
|
|
258
|
+
*
|
|
259
|
+
* ## Same-graph guarantee
|
|
260
|
+
*
|
|
261
|
+
* Edges emitted by `runScopeResolution` and edges emitted by the legacy
|
|
262
|
+
* DAG are indistinguishable to downstream consumers:
|
|
263
|
+
* - Node identity: same `generateId(...)` helper, same qualified-name
|
|
264
|
+
* keyspace, same File/Folder/Method/Class node labels.
|
|
265
|
+
* - Edge vocabulary: `'import-resolved' | 'global' | 'local-call' |
|
|
266
|
+
* 'same-file' | 'interface-dispatch' | 'read' | 'write'` — both
|
|
267
|
+
* paths emit the same reasons (see
|
|
268
|
+
* `cgraph/src/core/ingestion/call-processor.ts` for the legacy
|
|
269
|
+
* emitter and `passes/receiver-bound-calls.ts` /
|
|
270
|
+
* `passes/free-call-fallback.ts` for the scope-resolution emitters).
|
|
271
|
+
* - Overload disambiguation: both paths use
|
|
272
|
+
* `generateId('Method', ...)` suffixed with `parameterTypes` when a
|
|
273
|
+
* method has overloads — see `graph-bridge/ids.ts`.
|
|
274
|
+
*
|
|
275
|
+
* The CI parity workflow (`.github/workflows/ci-scope-parity.yml`)
|
|
276
|
+
* runs both paths on every migrated language's fixture corpus and
|
|
277
|
+
* fails if the graph outputs diverge.
|
|
278
|
+
*
|
|
279
|
+
* Plan that introduced most of these invariants:
|
|
280
|
+
* `docs/plans/2026-04-20-001-refactor-emit-pipeline-generalization-plan.md`.
|
|
281
|
+
*/
|
|
282
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resolved-callee-id capture sink (#2227 follow-up plan U2).
|
|
4
|
+
*
|
|
5
|
+
* During Phase-4 scope-resolution CALLS-edge emission, each resolved call
|
|
6
|
+
* site's `(callSiteLine, callSiteCol) → resolvedCalleeId` mapping is
|
|
7
|
+
* accumulated here — across ALL THREE CALLS emit paths
|
|
8
|
+
* (`emitReceiverBoundCalls` via `tryEmitEdge`/`tryEmitEdgeWithExplicitTargetId`,
|
|
9
|
+
* and the inline `graph.addRelationship` in `emitFreeCallFallback` and
|
|
10
|
+
* `emitReferencesViaLookup`), each BEFORE its dedup (KTD6/R8). A later unit
|
|
11
|
+
* (U3) joins this map to CFG `BasicBlock`s by exact call-site position and
|
|
12
|
+
* emits a `BasicBlock.calleeIds` set.
|
|
13
|
+
*
|
|
14
|
+
* KEY ALIGNMENT (plan KTD7 — load-bearing): the key is the call/new
|
|
15
|
+
* expression node's start position — `line` 1-based (`startPosition.row + 1`),
|
|
16
|
+
* `col` 0-based (`startPosition.column`). This MUST equal the U1
|
|
17
|
+
* `SiteRecord.at` so the U3 position join lands. The CALLS resolution exposes
|
|
18
|
+
* the same node's range via `site.atRange` (`atRange: anchor.range`,
|
|
19
|
+
* scope-extractor.ts:1030), whose `startLine`/`startCol` are built by
|
|
20
|
+
* `nodeToCapture` as `row + 1` / `column` (1-based line, 0-based col — see the
|
|
21
|
+
* `Range` doc in cgraph-shared). So a capture keyed on
|
|
22
|
+
* `(atRange.startLine, atRange.startCol)` is byte-equal to U1's `at` — no
|
|
23
|
+
* normalization needed.
|
|
24
|
+
*
|
|
25
|
+
* Gating (R4): the concrete sink is created in `run.ts` when PDG is enabled OR
|
|
26
|
+
* always-on callable-flow facts need direct call targets for actual→formal
|
|
27
|
+
* propagation. The read-side CFG join remains strictly PDG-gated.
|
|
28
|
+
*
|
|
29
|
+
* Multi-target dispatch (R2/KTD8): one site → multiple emit calls → the `Set`
|
|
30
|
+
* accumulates every resolved target. Capture is per-emit-call, so the
|
|
31
|
+
* candidate set is complete and a real target is never dropped.
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.calleeIdPosKey = calleeIdPosKey;
|
|
35
|
+
exports.createCalleeIdAccumulator = createCalleeIdAccumulator;
|
|
36
|
+
/** Build the position key from a call-site anchor. Single source of truth so
|
|
37
|
+
* producer (this sink) and consumer (U3's CFG join) encode positions
|
|
38
|
+
* identically. */
|
|
39
|
+
function calleeIdPosKey(line, col) {
|
|
40
|
+
return `${line}:${col}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create the concrete nested-`Map` accumulator for PDG callee capture or
|
|
44
|
+
* callable-value-flow's direct-target index.
|
|
45
|
+
*/
|
|
46
|
+
function createCalleeIdAccumulator(shouldCapture) {
|
|
47
|
+
const byFile = new Map();
|
|
48
|
+
return {
|
|
49
|
+
add(filePath, line, col, calleeId) {
|
|
50
|
+
if (shouldCapture?.(filePath, line, col) === false)
|
|
51
|
+
return;
|
|
52
|
+
let byPos = byFile.get(filePath);
|
|
53
|
+
if (byPos === undefined) {
|
|
54
|
+
byPos = new Map();
|
|
55
|
+
byFile.set(filePath, byPos);
|
|
56
|
+
}
|
|
57
|
+
const key = calleeIdPosKey(line, col);
|
|
58
|
+
let ids = byPos.get(key);
|
|
59
|
+
if (ids === undefined) {
|
|
60
|
+
ids = new Set();
|
|
61
|
+
byPos.set(key, ids);
|
|
62
|
+
}
|
|
63
|
+
ids.add(calleeId);
|
|
64
|
+
},
|
|
65
|
+
get(filePath) {
|
|
66
|
+
return byFile.get(filePath);
|
|
67
|
+
},
|
|
68
|
+
delete(filePath) {
|
|
69
|
+
byFile.delete(filePath);
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Graph edge emission primitives.
|
|
4
|
+
*
|
|
5
|
+
* Two functions:
|
|
6
|
+
* - `mapReferenceKindToEdgeType` — translate a scope-resolution
|
|
7
|
+
* `Reference.kind` into the corresponding graph edge type.
|
|
8
|
+
* - `tryEmitEdge` — given a reference site + target def, resolve
|
|
9
|
+
* caller + target to graph ids and emit the edge with
|
|
10
|
+
* language-provided reason text, dedup-keyed by
|
|
11
|
+
* `(edgeType, callerId, targetId, line, col)`.
|
|
12
|
+
*
|
|
13
|
+
* Next-consumer contract: any language provider can call `tryEmitEdge`
|
|
14
|
+
* from its own post-pass to emit edges it resolves Python-specific
|
|
15
|
+
* (or TypeScript-specific, etc.) logic. The dedup key is
|
|
16
|
+
* language-agnostic — no language needs to change it.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.mapReferenceKindToEdgeType = mapReferenceKindToEdgeType;
|
|
20
|
+
exports.tryEmitEdge = tryEmitEdge;
|
|
21
|
+
exports.tryEmitEdgeWithExplicitTargetId = tryEmitEdgeWithExplicitTargetId;
|
|
22
|
+
const symbol_table_js_1 = require("../../model/symbol-table.js");
|
|
23
|
+
const ids_js_1 = require("../graph-bridge/ids.js");
|
|
24
|
+
/**
|
|
25
|
+
* Map a `Reference.kind` to a graph edge type. `import-use` is dropped
|
|
26
|
+
* (no edge type today — provenance lives on the IMPORTS edge emitted
|
|
27
|
+
* by `emitImportEdges`).
|
|
28
|
+
*/
|
|
29
|
+
function mapReferenceKindToEdgeType(kind) {
|
|
30
|
+
switch (kind) {
|
|
31
|
+
case 'call':
|
|
32
|
+
return 'CALLS';
|
|
33
|
+
case 'read':
|
|
34
|
+
case 'write':
|
|
35
|
+
return 'ACCESSES';
|
|
36
|
+
case 'inherits':
|
|
37
|
+
return 'EXTENDS';
|
|
38
|
+
case 'type-reference':
|
|
39
|
+
return 'USES';
|
|
40
|
+
// A function registered as an object-literal property value emits a
|
|
41
|
+
// reference-class USES edge, NOT CALLS — a registration is not an
|
|
42
|
+
// invocation (Kythe `ref` vs `ref/call`; Joern `METHOD_REF`). The
|
|
43
|
+
// invocation side is synthesized by the property-dispatch pass (#2437).
|
|
44
|
+
case 'value-ref':
|
|
45
|
+
return 'USES';
|
|
46
|
+
// Macro invocations resolve to a `Macro` node (never a function), so
|
|
47
|
+
// they emit `USES` — kept out of the `CALLS` keyspace which denotes
|
|
48
|
+
// function/method dispatch (#1934 review).
|
|
49
|
+
case 'macro':
|
|
50
|
+
return 'USES';
|
|
51
|
+
case 'import-use':
|
|
52
|
+
return undefined;
|
|
53
|
+
default:
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Is this read site a PHANTOM — a duplicate of the call happening beside it?
|
|
59
|
+
*
|
|
60
|
+
* Some languages' member-read capture also matches the callee of a member call,
|
|
61
|
+
* so `obj.f()` produces a `call` site on `f` AND a `read` site on `obj.f` at the
|
|
62
|
+
* same position (Go's `@reference.read` matches every `selector_expression`).
|
|
63
|
+
* The capture layer marks that second site `inCalleePosition` rather than
|
|
64
|
+
* dropping it, because the two cases it covers are indistinguishable there:
|
|
65
|
+
*
|
|
66
|
+
* - tail resolves to a METHOD → phantom. The ACCESSES edge duplicates the
|
|
67
|
+
* CALLS edge emitted for the same source position; suppress it.
|
|
68
|
+
* - tail resolves to a FIELD → genuine. `h.dep.Work()` where
|
|
69
|
+
* `Work func() error` reads a func-typed struct field and calls the value
|
|
70
|
+
* it holds. That read is the field's only ACCESSES evidence — keep it.
|
|
71
|
+
*
|
|
72
|
+
* Only the resolved target's kind separates them, which is why this decision
|
|
73
|
+
* lives at emission and not in any language's capture code. Sites without the
|
|
74
|
+
* marker are untouched, so a genuine method VALUE (`f := obj.method`) — never in
|
|
75
|
+
* callee position — keeps its read.
|
|
76
|
+
*
|
|
77
|
+
* "Invoked rather than read" is `CALL_TARGET_TYPES` — the canonical callable
|
|
78
|
+
* target set (`FREE_CALLABLE_TYPES` ∪ Method/Constructor), not a local copy. A
|
|
79
|
+
* hand-rolled `{Function, Method, Constructor}` silently omits `Macro` (C/C++)
|
|
80
|
+
* and `Delegate` (C#), the two labels that set exists to add, and drops the
|
|
81
|
+
* `satisfies` guard in `symbol-table.ts` that compile-enforces every free
|
|
82
|
+
* callable label against `LABEL_BEHAVIOR`.
|
|
83
|
+
*/
|
|
84
|
+
function isPhantomCalleeRead(site, targetDef) {
|
|
85
|
+
if (site.kind !== 'read' || site.inCalleePosition !== true)
|
|
86
|
+
return false;
|
|
87
|
+
return symbol_table_js_1.CALL_TARGET_TYPES.has(targetDef.type);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolve caller + target to graph ids and emit the edge. Returns true
|
|
91
|
+
* if the edge was emitted (not deduped, not skipped).
|
|
92
|
+
*
|
|
93
|
+
* `seen` is a language-shared dedup set keyed by
|
|
94
|
+
* `${edgeType}:${callerGraphId}->${targetGraphId}:${line}:${col}` so
|
|
95
|
+
* multiple language-specific post-passes can share it and never
|
|
96
|
+
* double-emit a resolution one of them already produced.
|
|
97
|
+
*/
|
|
98
|
+
function tryEmitEdge(graph, scopes, nodeLookup, site, targetDef, reason, seen, confidence = 0.85, collapseByCallerTarget = false, calleeCapture) {
|
|
99
|
+
// A read that only exists because it is the callee of the call beside it, and
|
|
100
|
+
// whose tail resolved to a callable, is that call restated as an access —
|
|
101
|
+
// checked first because it needs no id resolution.
|
|
102
|
+
if (isPhantomCalleeRead(site, targetDef))
|
|
103
|
+
return false;
|
|
104
|
+
// Inheritance edges are emitted directly by `preEmitInheritanceEdges` (which
|
|
105
|
+
// owns the enclosing-class caller and the EXTENDS-vs-IMPLEMENTS type), so this
|
|
106
|
+
// generic bridge derives caller + edge type purely from the site.
|
|
107
|
+
const callerGraphId = (0, ids_js_1.resolveCallerGraphId)(site.inScope, scopes, nodeLookup, site.atRange);
|
|
108
|
+
const targetGraphId = (0, ids_js_1.resolveDefGraphId)(targetDef.filePath, targetDef, nodeLookup);
|
|
109
|
+
const edgeType = mapReferenceKindToEdgeType(site.kind);
|
|
110
|
+
if (callerGraphId === undefined)
|
|
111
|
+
return false;
|
|
112
|
+
if (targetGraphId === undefined)
|
|
113
|
+
return false;
|
|
114
|
+
if (edgeType === undefined)
|
|
115
|
+
return false;
|
|
116
|
+
// Resolved-callee-id capture (#2227 U2/KTD6/R8): record this CALLS site's
|
|
117
|
+
// resolved target BEFORE the dedup `seen` check, so collapsed same-target
|
|
118
|
+
// multi-line calls are still captured per site. Keyed on `site.atRange`
|
|
119
|
+
// (1-based line / 0-based col — byte-equal to U1's SiteRecord.at).
|
|
120
|
+
if (calleeCapture !== undefined && edgeType === 'CALLS') {
|
|
121
|
+
calleeCapture.sink.add(calleeCapture.filePath, site.atRange.startLine, site.atRange.startCol, targetGraphId);
|
|
122
|
+
}
|
|
123
|
+
// CALLS edges may collapse to `(caller, target)` granularity when
|
|
124
|
+
// the provider opts in (C# matches legacy DAG behavior this way).
|
|
125
|
+
// Write/read ACCESSES keep per-site dedup so multiple writes to the
|
|
126
|
+
// same field on different lines produce distinct edges.
|
|
127
|
+
const useCollapsed = collapseByCallerTarget && edgeType === 'CALLS';
|
|
128
|
+
const dedupKey = useCollapsed
|
|
129
|
+
? `${edgeType}:${callerGraphId}->${targetGraphId}`
|
|
130
|
+
: `${edgeType}:${callerGraphId}->${targetGraphId}:${site.atRange.startLine}:${site.atRange.startCol}`;
|
|
131
|
+
if (seen.has(dedupKey))
|
|
132
|
+
return false;
|
|
133
|
+
seen.add(dedupKey);
|
|
134
|
+
graph.addRelationship({
|
|
135
|
+
id: `rel:${dedupKey}`,
|
|
136
|
+
sourceId: callerGraphId,
|
|
137
|
+
targetId: targetGraphId,
|
|
138
|
+
type: edgeType,
|
|
139
|
+
confidence,
|
|
140
|
+
reason,
|
|
141
|
+
});
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Variant of `tryEmitEdge` that takes a pre-resolved target graph id
|
|
146
|
+
* instead of resolving it from a `SymbolDefinition`. Used by the
|
|
147
|
+
* value-receiver-owner bridge (`receiver-bound-calls.ts` Case 5) where
|
|
148
|
+
* the picked owner-indexed method def carries no `qualifiedName` (object
|
|
149
|
+
* literals have no class owner to seed it) and therefore cannot
|
|
150
|
+
* round-trip through `resolveDefGraphId`. The def's `nodeId` IS the
|
|
151
|
+
* canonical graph node id (written by the parse phase), so the caller
|
|
152
|
+
* passes it directly.
|
|
153
|
+
*
|
|
154
|
+
* All other invariants of `tryEmitEdge` apply: dedup key shape, collapse
|
|
155
|
+
* flag honoring, edge-type mapping, caller-id resolution.
|
|
156
|
+
*
|
|
157
|
+
* ONE deliberate exception: the {@link isPhantomCalleeRead} suppression is not
|
|
158
|
+
* applied here, because it keys on the target's node label and this entry point
|
|
159
|
+
* is handed an id rather than a def. Reachable only for a `read` site marked
|
|
160
|
+
* `inCalleePosition` whose receiver typed as an object-literal VALUE — a
|
|
161
|
+
* JS/TS-shaped registration. No language that sets the marker resolves through
|
|
162
|
+
* this bridge today (verified for Go, whose func-valued struct-literal fields
|
|
163
|
+
* resolve through the owned-member path instead). A language adding the marker
|
|
164
|
+
* must re-check this path.
|
|
165
|
+
*/
|
|
166
|
+
function tryEmitEdgeWithExplicitTargetId(graph, scopes, nodeLookup, site, targetGraphId, reason, seen, confidence = 0.85, collapseByCallerTarget = false, calleeCapture) {
|
|
167
|
+
const callerGraphId = (0, ids_js_1.resolveCallerGraphId)(site.inScope, scopes, nodeLookup, site.atRange);
|
|
168
|
+
const edgeType = mapReferenceKindToEdgeType(site.kind);
|
|
169
|
+
if (callerGraphId === undefined)
|
|
170
|
+
return false;
|
|
171
|
+
if (edgeType === undefined)
|
|
172
|
+
return false;
|
|
173
|
+
// Resolved-callee-id capture (#2227 U2/KTD6/R8) — before dedup, see
|
|
174
|
+
// `tryEmitEdge`. The explicit target id IS the resolved callee id.
|
|
175
|
+
if (calleeCapture !== undefined && edgeType === 'CALLS') {
|
|
176
|
+
calleeCapture.sink.add(calleeCapture.filePath, site.atRange.startLine, site.atRange.startCol, targetGraphId);
|
|
177
|
+
}
|
|
178
|
+
const useCollapsed = collapseByCallerTarget && edgeType === 'CALLS';
|
|
179
|
+
const dedupKey = useCollapsed
|
|
180
|
+
? `${edgeType}:${callerGraphId}->${targetGraphId}`
|
|
181
|
+
: `${edgeType}:${callerGraphId}->${targetGraphId}:${site.atRange.startLine}:${site.atRange.startCol}`;
|
|
182
|
+
if (seen.has(dedupKey))
|
|
183
|
+
return false;
|
|
184
|
+
seen.add(dedupKey);
|
|
185
|
+
graph.addRelationship({
|
|
186
|
+
id: `rel:${dedupKey}`,
|
|
187
|
+
sourceId: callerGraphId,
|
|
188
|
+
targetId: targetGraphId,
|
|
189
|
+
type: edgeType,
|
|
190
|
+
confidence,
|
|
191
|
+
reason,
|
|
192
|
+
});
|
|
193
|
+
return true;
|
|
194
|
+
}
|