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,441 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Overload narrowing — pick candidates from a list of same-named
|
|
4
|
+
* method / function overloads using the call-site's arity and
|
|
5
|
+
* argument-type signals.
|
|
6
|
+
*
|
|
7
|
+
* Used by both `receiver-bound-calls.ts::pickOverload` (explicit
|
|
8
|
+
* receiver member call) and `free-call-fallback.ts::pickImplicitThisOverload`
|
|
9
|
+
* (implicit `this` free-call inside a class-like body). Shared to keep
|
|
10
|
+
* narrowing semantics in lockstep across the two sites.
|
|
11
|
+
*
|
|
12
|
+
* Semantics (first-wins; callers take `result[0]`):
|
|
13
|
+
* 1. If `argCount` is undefined, arity is a pass-through.
|
|
14
|
+
* 2. Exact-required-match wins over variadic. Variadic is detected
|
|
15
|
+
* via a `parameterTypes` entry equal to `'params'` or starting
|
|
16
|
+
* with `'params '` (C# `params` / variadic marker).
|
|
17
|
+
* 3. If the arity filter empties the set AND any candidate had
|
|
18
|
+
* unknown bounds (both `parameterCount` and `requiredParameterCount`
|
|
19
|
+
* undefined), fall back to the full overload list — the empty
|
|
20
|
+
* result may be due to missing metadata rather than a real mismatch.
|
|
21
|
+
* If EVERY rejected candidate had definite arity bounds, trust the
|
|
22
|
+
* filter and return empty — the call is genuinely arity-incompatible
|
|
23
|
+
* (e.g., PHP `f(int $req, ...$rest)` called with zero args).
|
|
24
|
+
* 4. If `argTypes` is present, filter further by per-slot type
|
|
25
|
+
* equality. An empty string in `argTypes[i]` means "unknown" and
|
|
26
|
+
* counts as a match. Mismatches disqualify. A non-empty typed
|
|
27
|
+
* result wins; otherwise return the arity-filtered candidates.
|
|
28
|
+
* 4b. When the exact-type filter from step 4 returns empty AND a
|
|
29
|
+
* `conversionRankFn` is provided (via `hookCtx`), rank candidates
|
|
30
|
+
* via pairwise dominance comparison (ISO C++ [over.ics.rank]):
|
|
31
|
+
* F1 beats F2 only when F1 is not worse for every arg and better
|
|
32
|
+
* for at least one. Non-dominated candidates are returned;
|
|
33
|
+
* multiple survivors are genuinely ambiguous.
|
|
34
|
+
* 4c. Final per-candidate constraint filter (SFINAE / `requires`).
|
|
35
|
+
* When `constraintCompatibility` is provided via `hookCtx`, drop
|
|
36
|
+
* candidates whose template constraints provably fail at the
|
|
37
|
+
* call site. Three-valued; `'unknown'` keeps the candidate
|
|
38
|
+
* (monotonicity).
|
|
39
|
+
* 4d. Conservative C++ template partial-order approximation. When
|
|
40
|
+
* template-placeholder overloads remain tied, prefer a candidate
|
|
41
|
+
* whose parameter shape is more specialized for the observed
|
|
42
|
+
* argument shape (`T*` over `T`, `const T&` over `T`). Unknown or
|
|
43
|
+
* incomparable shapes are left ambiguous.
|
|
44
|
+
* 5. Empty input returns empty output.
|
|
45
|
+
*/
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.narrowOverloadCandidates = narrowOverloadCandidates;
|
|
48
|
+
exports.isOverloadAmbiguousAfterNormalization = isOverloadAmbiguousAfterNormalization;
|
|
49
|
+
function narrowOverloadCandidates(overloads, argCount, argTypes, hookCtx) {
|
|
50
|
+
if (overloads.length === 0)
|
|
51
|
+
return [];
|
|
52
|
+
const arityMatches = argCount === undefined
|
|
53
|
+
? overloads
|
|
54
|
+
: overloads.filter((d) => {
|
|
55
|
+
const max = d.parameterCount;
|
|
56
|
+
const min = d.requiredParameterCount;
|
|
57
|
+
if (max !== undefined && argCount > max) {
|
|
58
|
+
// Variadic marker check is C#-specific (the 'params' keyword).
|
|
59
|
+
// Other languages use their own marker — PHP uses '...' (see
|
|
60
|
+
// `languages/php/arity-metadata.ts:46`), Python uses '*args'-
|
|
61
|
+
// shaped metadata that lives outside `parameterTypes` entirely.
|
|
62
|
+
// This branch is dead code for those languages because they
|
|
63
|
+
// set `parameterCount = undefined` for variadic functions,
|
|
64
|
+
// which keeps `max` undefined and skips this check entirely.
|
|
65
|
+
// Adding new variadic markers here changes behavior for those
|
|
66
|
+
// other languages too — don't extend without auditing each
|
|
67
|
+
// adapter's `arity-metadata.ts`. Finding 9 of PR #1497.
|
|
68
|
+
const variadic = d.parameterTypes !== undefined &&
|
|
69
|
+
d.parameterTypes.some((t) => t === 'params' || t.startsWith('params '));
|
|
70
|
+
if (!variadic)
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (min !== undefined && argCount < min)
|
|
74
|
+
return false;
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
// When the arity filter empties the set, only fall back to the full
|
|
78
|
+
// overload list if some candidate had unknown bounds — otherwise the
|
|
79
|
+
// empty result is authoritative (every candidate definitively failed
|
|
80
|
+
// arity, e.g., PHP variadic with required-prefix called with too few
|
|
81
|
+
// args).
|
|
82
|
+
const anyUnknownBounds = overloads.some((d) => d.parameterCount === undefined && d.requiredParameterCount === undefined);
|
|
83
|
+
const candidates = arityMatches.length > 0 ? arityMatches : anyUnknownBounds ? overloads : [];
|
|
84
|
+
let result = candidates;
|
|
85
|
+
if (argTypes !== undefined && argTypes.length > 0) {
|
|
86
|
+
const typed = candidates.filter((d) => {
|
|
87
|
+
const params = d.parameterTypes;
|
|
88
|
+
if (params === undefined)
|
|
89
|
+
return false;
|
|
90
|
+
for (let i = 0; i < argTypes.length && i < params.length; i++) {
|
|
91
|
+
if (argTypes[i] === '')
|
|
92
|
+
continue;
|
|
93
|
+
if (!exactTypeSlotMatches(argTypes[i], params[i], hookCtx?.argumentTypeClasses?.[i], d.parameterTypeClasses?.[i])) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
});
|
|
99
|
+
if (typed.length > 0) {
|
|
100
|
+
result = typed;
|
|
101
|
+
}
|
|
102
|
+
else if (hookCtx?.conversionRankFn !== undefined) {
|
|
103
|
+
// ── Conversion-rank scoring (step 4b) ──────────────────────────
|
|
104
|
+
// The exact-type filter rejected every candidate. Rank via
|
|
105
|
+
// pairwise dominance: F1 beats F2 only when F1 is not worse for
|
|
106
|
+
// every arg and better for at least one. Non-dominated candidates
|
|
107
|
+
// are returned; multiple survivors are genuinely ambiguous. When
|
|
108
|
+
// ranking also yields empty, fall through to the arity-filtered
|
|
109
|
+
// `candidates` set — matches pre-#1606 behavior.
|
|
110
|
+
const ranked = rankByConversion(candidates, argTypes, hookCtx.conversionRankFn, hookCtx.argumentTypeClasses);
|
|
111
|
+
if (ranked.length > 0)
|
|
112
|
+
result = ranked;
|
|
113
|
+
else if (candidates.length > 1 &&
|
|
114
|
+
hasConversionOnlyArgType(argTypes, hookCtx.conversionOnlyArgTypePrefixes)) {
|
|
115
|
+
result = [];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Constraint filter (step 4c; Tier-A — SFINAE / `requires` clauses).
|
|
120
|
+
// Runs after arity, exact-type, and conversion-rank filters so the
|
|
121
|
+
// hook only sees candidates already viable on the other axes.
|
|
122
|
+
// Three-valued: `'compatible'` and `'unknown'` keep the candidate
|
|
123
|
+
// (monotonicity — adding a predicate must never cause a wrong edge);
|
|
124
|
+
// only `'incompatible'` drops it. Candidates without
|
|
125
|
+
// `templateConstraints` are always kept.
|
|
126
|
+
//
|
|
127
|
+
// No fallback to the unconstrained set when this filter empties the
|
|
128
|
+
// candidate list: a fully-`'incompatible'` verdict is authoritative.
|
|
129
|
+
// The downstream `OVERLOAD_AMBIGUOUS` sentinel still guards the empty
|
|
130
|
+
// case, so a buggy hook that wrongly returns `'incompatible'` for
|
|
131
|
+
// every candidate degrades to today's "suppress edge" behavior rather
|
|
132
|
+
// than emitting a wrong edge.
|
|
133
|
+
if (hookCtx?.constraintCompatibility !== undefined && argCount !== undefined) {
|
|
134
|
+
const callsite = { arity: argCount };
|
|
135
|
+
const ctx = argTypes !== undefined
|
|
136
|
+
? {
|
|
137
|
+
argumentTypes: argTypes,
|
|
138
|
+
...(hookCtx.argumentTypeClasses !== undefined
|
|
139
|
+
? { argumentTypeClasses: hookCtx.argumentTypeClasses }
|
|
140
|
+
: {}),
|
|
141
|
+
}
|
|
142
|
+
: {};
|
|
143
|
+
result = result.filter((def) => {
|
|
144
|
+
if (def.templateConstraints === undefined)
|
|
145
|
+
return true;
|
|
146
|
+
return hookCtx.constraintCompatibility(callsite, def, ctx) !== 'incompatible';
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (result.length > 1 && argTypes !== undefined && argTypes.length > 0) {
|
|
150
|
+
const partiallyOrdered = rankByTemplatePartialOrdering(result, argTypes, hookCtx?.argumentTypeClasses);
|
|
151
|
+
if (partiallyOrdered !== undefined)
|
|
152
|
+
result = partiallyOrdered;
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
function hasConversionOnlyArgType(argTypes, prefixes) {
|
|
157
|
+
if (prefixes === undefined || prefixes.length === 0)
|
|
158
|
+
return false;
|
|
159
|
+
return argTypes.some((type) => prefixes.some((prefix) => type.startsWith(prefix)));
|
|
160
|
+
}
|
|
161
|
+
function exactTypeSlotMatches(argType, paramType, argTypeClass, paramTypeClass) {
|
|
162
|
+
if (argType !== paramType)
|
|
163
|
+
return false;
|
|
164
|
+
// C++ normalizes away pointer markers (`int*` -> `int`). When both sides
|
|
165
|
+
// provide shape sidecars, do not let that collapse make `int` exactly match
|
|
166
|
+
// `int*`. Unknown sidecar evidence preserves the previous string-only path.
|
|
167
|
+
if (argTypeClass === undefined || paramTypeClass === undefined)
|
|
168
|
+
return true;
|
|
169
|
+
if (argTypeClass.indirection === 'unknown' || paramTypeClass.indirection === 'unknown') {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
return isPointerShape(argTypeClass) === isPointerShape(paramTypeClass);
|
|
173
|
+
}
|
|
174
|
+
function isPointerShape(typeClass) {
|
|
175
|
+
return typeClass.indirection === 'pointer' && typeClass.pointerDepth > 0;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Pairwise dominance comparison (ISO C++ [over.ics.rank]).
|
|
179
|
+
*
|
|
180
|
+
* F1 is a better match than F2 when F1's conversion rank is **not
|
|
181
|
+
* worse** for every argument AND **strictly better** for at least one.
|
|
182
|
+
* Candidates dominated by any other viable candidate are removed.
|
|
183
|
+
* If more than one non-dominated candidate remains, they are genuinely
|
|
184
|
+
* ambiguous — callers suppress the edge rather than picking arbitrarily.
|
|
185
|
+
*
|
|
186
|
+
* Candidates with at least one `Infinity`-ranked slot (incompatible
|
|
187
|
+
* type) are excluded before pairwise comparison begins.
|
|
188
|
+
*/
|
|
189
|
+
function rankByConversion(candidates, argTypes, rankFn, argTypeClasses) {
|
|
190
|
+
// Step 1: compute per-slot ranks and exclude non-viable candidates.
|
|
191
|
+
const viable = [];
|
|
192
|
+
for (const d of candidates) {
|
|
193
|
+
const params = d.parameterTypes;
|
|
194
|
+
if (params === undefined)
|
|
195
|
+
continue;
|
|
196
|
+
const ranks = [];
|
|
197
|
+
let ok = true;
|
|
198
|
+
for (let i = 0; i < argTypes.length; i++) {
|
|
199
|
+
const paramType = parameterTypeAt(params, i);
|
|
200
|
+
if (paramType === undefined) {
|
|
201
|
+
ok = false;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (argTypes[i] === '') {
|
|
205
|
+
ranks.push(0); // unknown arg → any-match (rank 0)
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const r = rankFn(argTypes[i], paramType, argTypeClasses?.[i], parameterTypeClassAt(d.parameterTypeClasses, i));
|
|
209
|
+
if (!isFinite(r)) {
|
|
210
|
+
ok = false;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
ranks.push(r);
|
|
214
|
+
}
|
|
215
|
+
if (!ok)
|
|
216
|
+
continue;
|
|
217
|
+
viable.push({ def: d, ranks });
|
|
218
|
+
}
|
|
219
|
+
if (viable.length <= 1)
|
|
220
|
+
return viable.map((v) => v.def);
|
|
221
|
+
// Step 2: pairwise dominance — remove candidates dominated by any other.
|
|
222
|
+
const dominated = new Set();
|
|
223
|
+
for (let i = 0; i < viable.length; i++) {
|
|
224
|
+
if (dominated.has(i))
|
|
225
|
+
continue;
|
|
226
|
+
for (let j = i + 1; j < viable.length; j++) {
|
|
227
|
+
if (dominated.has(j))
|
|
228
|
+
continue;
|
|
229
|
+
const cmp = pairwiseCompare(viable[i].ranks, viable[j].ranks);
|
|
230
|
+
if (cmp < 0)
|
|
231
|
+
dominated.add(j); // i dominates j
|
|
232
|
+
else if (cmp > 0)
|
|
233
|
+
dominated.add(i); // j dominates i
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return viable.filter((_, idx) => !dominated.has(idx)).map((v) => v.def);
|
|
237
|
+
}
|
|
238
|
+
function parameterTypeAt(params, argIndex) {
|
|
239
|
+
if (argIndex < params.length)
|
|
240
|
+
return params[argIndex];
|
|
241
|
+
return params[params.length - 1] === '...' ? '...' : undefined;
|
|
242
|
+
}
|
|
243
|
+
function parameterTypeClassAt(params, argIndex) {
|
|
244
|
+
if (params === undefined)
|
|
245
|
+
return undefined;
|
|
246
|
+
if (argIndex < params.length)
|
|
247
|
+
return params[argIndex];
|
|
248
|
+
return params[params.length - 1]?.base === '...' ? params[params.length - 1] : undefined;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Compare two per-slot rank vectors.
|
|
252
|
+
* Returns -1 if `a` dominates `b` (not worse everywhere, better somewhere),
|
|
253
|
+
* +1 if `b` dominates `a`,
|
|
254
|
+
* 0 if neither dominates (incomparable or equal).
|
|
255
|
+
*/
|
|
256
|
+
function pairwiseCompare(a, b) {
|
|
257
|
+
let aBetter = false;
|
|
258
|
+
let bBetter = false;
|
|
259
|
+
const len = Math.min(a.length, b.length);
|
|
260
|
+
for (let i = 0; i < len; i++) {
|
|
261
|
+
if (a[i] < b[i])
|
|
262
|
+
aBetter = true;
|
|
263
|
+
else if (b[i] < a[i])
|
|
264
|
+
bBetter = true;
|
|
265
|
+
if (aBetter && bBetter)
|
|
266
|
+
return 0; // incomparable — early exit
|
|
267
|
+
}
|
|
268
|
+
if (aBetter && !bBetter)
|
|
269
|
+
return -1;
|
|
270
|
+
if (bBetter && !aBetter)
|
|
271
|
+
return 1;
|
|
272
|
+
return 0;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Closed-table approximation of C++ function-template partial ordering.
|
|
276
|
+
*
|
|
277
|
+
* Full `[temp.func.order]` requires template argument deduction. GitNexus
|
|
278
|
+
* keeps this graph-safe by recognizing only syntactic placeholder shapes
|
|
279
|
+
* that the C++ parameter sidecar already preserves:
|
|
280
|
+
* - `T*` is more specialized than `T` for pointer arguments.
|
|
281
|
+
*
|
|
282
|
+
* Anything with unknown argument shape, non-template parameter spelling, or
|
|
283
|
+
* incomparable specialized shapes stays ambiguous so callers suppress. The
|
|
284
|
+
* placeholder detector is intentionally narrow: lowercase template parameters
|
|
285
|
+
* are left ambiguous rather than guessed.
|
|
286
|
+
*/
|
|
287
|
+
function rankByTemplatePartialOrdering(candidates, argTypes, argTypeClasses) {
|
|
288
|
+
if (argTypeClasses === undefined)
|
|
289
|
+
return undefined;
|
|
290
|
+
const viable = [];
|
|
291
|
+
for (const def of candidates) {
|
|
292
|
+
const params = def.parameterTypes;
|
|
293
|
+
const paramClasses = def.parameterTypeClasses;
|
|
294
|
+
if (params === undefined || paramClasses === undefined)
|
|
295
|
+
continue;
|
|
296
|
+
const ranks = [];
|
|
297
|
+
let sawTemplateSlot = false;
|
|
298
|
+
let ok = true;
|
|
299
|
+
for (let i = 0; i < argTypes.length; i++) {
|
|
300
|
+
const paramType = parameterTypeAt(params, i);
|
|
301
|
+
const paramClass = parameterTypeClassAt(paramClasses, i);
|
|
302
|
+
const argClass = argTypeClasses[i];
|
|
303
|
+
if (paramType === undefined || paramClass === undefined || argClass === undefined) {
|
|
304
|
+
ok = false;
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
const rank = templatePartialOrderSlotRank(paramType, paramClass, argClass);
|
|
308
|
+
if (rank === undefined) {
|
|
309
|
+
ok = false;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
sawTemplateSlot ||= isTemplatePlaceholder(paramType);
|
|
313
|
+
ranks.push(rank);
|
|
314
|
+
}
|
|
315
|
+
if (ok && sawTemplateSlot)
|
|
316
|
+
viable.push({ def, ranks });
|
|
317
|
+
}
|
|
318
|
+
if (viable.length === 0)
|
|
319
|
+
return undefined;
|
|
320
|
+
if (viable.length !== candidates.length)
|
|
321
|
+
return [];
|
|
322
|
+
if (viable.length <= 1)
|
|
323
|
+
return viable.map((v) => v.def);
|
|
324
|
+
const dominated = new Set();
|
|
325
|
+
for (let i = 0; i < viable.length; i++) {
|
|
326
|
+
if (dominated.has(i))
|
|
327
|
+
continue;
|
|
328
|
+
for (let j = i + 1; j < viable.length; j++) {
|
|
329
|
+
if (dominated.has(j))
|
|
330
|
+
continue;
|
|
331
|
+
const cmp = compareSpecializationRanks(viable[i].ranks, viable[j].ranks);
|
|
332
|
+
if (cmp < 0)
|
|
333
|
+
dominated.add(j);
|
|
334
|
+
else if (cmp > 0)
|
|
335
|
+
dominated.add(i);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return viable.filter((_, idx) => !dominated.has(idx)).map((v) => v.def);
|
|
339
|
+
}
|
|
340
|
+
function templatePartialOrderSlotRank(paramType, paramClass, argClass) {
|
|
341
|
+
if (!isTemplatePlaceholder(paramType))
|
|
342
|
+
return undefined;
|
|
343
|
+
if (argClass.indirection === 'unknown' || paramClass.indirection === 'unknown') {
|
|
344
|
+
return undefined;
|
|
345
|
+
}
|
|
346
|
+
if (isPointerShape(paramClass)) {
|
|
347
|
+
return isPointerShape(argClass) ? 3 : undefined;
|
|
348
|
+
}
|
|
349
|
+
if (paramClass.indirection === 'value')
|
|
350
|
+
return 1;
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
function isTemplatePlaceholder(typeName) {
|
|
354
|
+
return /^[A-Z]\w*$/.test(typeName);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Higher specialization rank is better. Returns -1 when `a` dominates `b`,
|
|
358
|
+
* +1 when `b` dominates `a`, and 0 for ties / incomparable vectors.
|
|
359
|
+
*/
|
|
360
|
+
function compareSpecializationRanks(a, b) {
|
|
361
|
+
let aBetter = false;
|
|
362
|
+
let bBetter = false;
|
|
363
|
+
const len = Math.min(a.length, b.length);
|
|
364
|
+
for (let i = 0; i < len; i++) {
|
|
365
|
+
if (a[i] > b[i])
|
|
366
|
+
aBetter = true;
|
|
367
|
+
else if (b[i] > a[i])
|
|
368
|
+
bBetter = true;
|
|
369
|
+
if (aBetter && bBetter)
|
|
370
|
+
return 0;
|
|
371
|
+
}
|
|
372
|
+
if (aBetter && !bBetter)
|
|
373
|
+
return -1;
|
|
374
|
+
if (bBetter && !aBetter)
|
|
375
|
+
return 1;
|
|
376
|
+
return 0;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Detect when >1 candidate share identical `parameterTypes` after the
|
|
380
|
+
* per-language normalizer has collapsed distinct underlying types. This
|
|
381
|
+
* signals "the resolver cannot pick the right overload — the
|
|
382
|
+
* normalization that helps single-candidate flows now hides a real
|
|
383
|
+
* ambiguity" and lets callers suppress the edge rather than pick
|
|
384
|
+
* arbitrarily.
|
|
385
|
+
*
|
|
386
|
+
* Concrete trigger (PR #1520 review follow-up plan U2, Claude review
|
|
387
|
+
* Finding 5): the C++ `arity-metadata.ts` normalizer collapses `int`,
|
|
388
|
+
* `long`, `short`, `unsigned`, and `size_t` to `'int'`. Without this
|
|
389
|
+
* check, `process(int)` and `process(long)` both end up with
|
|
390
|
+
* `parameterTypes === ['int']`, and `pickOverload` arbitrarily picks
|
|
391
|
+
* the first — emitting a false CALLS edge to the wrong overload.
|
|
392
|
+
*
|
|
393
|
+
* Returns false when:
|
|
394
|
+
* - 0 or 1 candidates (no ambiguity to detect)
|
|
395
|
+
* - any candidate has undefined `parameterTypes` (can't compare)
|
|
396
|
+
* - candidates differ in arity or in any parameter-type slot
|
|
397
|
+
*
|
|
398
|
+
* Other languages: this check is a precondition gate, not a behavior
|
|
399
|
+
* change for normal narrowing. Languages whose normalizers do not
|
|
400
|
+
* collapse distinct types (verified by grep over `*-arity-metadata.ts`
|
|
401
|
+
* — no `int → int` collapse outside C++) will never produce >1
|
|
402
|
+
* candidate with identical `parameterTypes` from genuinely distinct
|
|
403
|
+
* declarations, so this returns false for them. The branch is
|
|
404
|
+
* effectively C++-only in practice.
|
|
405
|
+
*/
|
|
406
|
+
function isOverloadAmbiguousAfterNormalization(candidates, argCount) {
|
|
407
|
+
if (candidates.length < 2)
|
|
408
|
+
return false;
|
|
409
|
+
const first = candidates[0].parameterTypes;
|
|
410
|
+
if (first === undefined)
|
|
411
|
+
return false;
|
|
412
|
+
// When argCount is provided, compare only the first `argCount` slots —
|
|
413
|
+
// this catches default-argument ambiguity: `void f(int); void f(int, int = 0);`
|
|
414
|
+
// called with `f(1)` (argCount=1) leaves both candidates viable because
|
|
415
|
+
// default args make them arity-compatible, and their first slot is
|
|
416
|
+
// identical even though full parameterTypes lengths differ.
|
|
417
|
+
// Without argCount, fall back to full-sequence comparison (the original
|
|
418
|
+
// int/long normalization-collapse case).
|
|
419
|
+
const compareUpTo = argCount !== undefined ? argCount : first.length;
|
|
420
|
+
if (compareUpTo === 0)
|
|
421
|
+
return false;
|
|
422
|
+
if (first.length < compareUpTo)
|
|
423
|
+
return false;
|
|
424
|
+
for (let i = 1; i < candidates.length; i++) {
|
|
425
|
+
const p = candidates[i].parameterTypes;
|
|
426
|
+
if (p === undefined)
|
|
427
|
+
return false;
|
|
428
|
+
if (p.length < compareUpTo)
|
|
429
|
+
return false;
|
|
430
|
+
for (let j = 0; j < compareUpTo; j++) {
|
|
431
|
+
if (p[j] !== first[j])
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
// When argCount is NOT provided, also require length equality so
|
|
435
|
+
// distinct-arity candidates that happen to share a prefix don't
|
|
436
|
+
// collapse to ambiguous (preserves the original int/long contract).
|
|
437
|
+
if (argCount === undefined && p.length !== first.length)
|
|
438
|
+
return false;
|
|
439
|
+
}
|
|
440
|
+
return true;
|
|
441
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `emitPropertyDispatchCalls` — value-ref registration edges + field-based
|
|
4
|
+
* dispatch for functions registered as object-literal property values
|
|
5
|
+
* (#2437).
|
|
6
|
+
*
|
|
7
|
+
* A provider-hook registration (`{ emitScopeCaptures: emitCppScopeCaptures }`)
|
|
8
|
+
* emits a USES reference edge — a registration is not an invocation (Kythe
|
|
9
|
+
* `ref` vs `ref/call`; Joern `METHOD_REF`). The invocation happens later
|
|
10
|
+
* through the property (`provider.emitScopeCaptures(...)`) — a dispatch the
|
|
11
|
+
* receiver-bound pass cannot resolve because object literals are not
|
|
12
|
+
* IMPLEMENTS-linked implementors. This pass closes that soundness gap the
|
|
13
|
+
* field-based way (Feldthaus et al., ICSE'13; CodeQL `impliedReceiverStep`):
|
|
14
|
+
* key registrations by property name and connect every member-call site
|
|
15
|
+
* `x.<key>(...)` to every function registered under `<key>`.
|
|
16
|
+
*
|
|
17
|
+
* This pass is the SINGLE owner of `value-ref` resolution. The shared
|
|
18
|
+
* registries only consult pre-finalize local bindings — imported names live
|
|
19
|
+
* in finalized bindings (the same reason free calls need
|
|
20
|
+
* `emitFreeCallFallback`) — so `resolveReferenceSites` skips `value-ref`
|
|
21
|
+
* sites and this pass resolves them post-finalize via
|
|
22
|
+
* `findCallableBindingInScope` (Function/Method/Constructor only — the
|
|
23
|
+
* callable gate that keeps `{ port: DEFAULT_PORT }` from emitting anything).
|
|
24
|
+
*
|
|
25
|
+
* Precision posture (mirrors `emitInterfaceDispatchFor`):
|
|
26
|
+
* - reason `'property-dispatch'` keeps synthesized CALLS auditable;
|
|
27
|
+
* - dispatch confidence 0.7 sits below the 0.85 resolved baseline;
|
|
28
|
+
* - a per-key fan-out cap drops promiscuous names (`handler`, `callback`)
|
|
29
|
+
* entirely rather than truncating silently — property-name collisions
|
|
30
|
+
* across unrelated objects are the documented field-based failure mode.
|
|
31
|
+
*
|
|
32
|
+
* Ordering: runs AFTER the precise emit passes. `graph.addRelationship` is
|
|
33
|
+
* first-write-wins on the position-keyed edge id, so a site that already
|
|
34
|
+
* resolved precisely to the same target keeps its precise edge.
|
|
35
|
+
*
|
|
36
|
+
* Language-neutral: consumes only `value-ref` sites (any language that
|
|
37
|
+
* emits the capture participates) and generic member-call sites.
|
|
38
|
+
*/
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.PROPERTY_DISPATCH_CONFIDENCE = exports.MAX_PROPERTY_DISPATCH_FANOUT = void 0;
|
|
41
|
+
exports.emitPropertyDispatchCalls = emitPropertyDispatchCalls;
|
|
42
|
+
const edges_js_1 = require("../graph-bridge/edges.js");
|
|
43
|
+
const walkers_js_1 = require("../scope/walkers.js");
|
|
44
|
+
/**
|
|
45
|
+
* Keys registered by more than this many distinct functions are skipped —
|
|
46
|
+
* dispatch through such a name says nothing about which function runs.
|
|
47
|
+
* Calibrated on this repo's own provider tables: `emitScopeCaptures` has 16
|
|
48
|
+
* legitimate registrations (one per language provider), so the cap sits at
|
|
49
|
+
* 2× that — dropping the motivating key was the failure the first value (8)
|
|
50
|
+
* had. ponytail: flat cap; revisit with per-receiver narrowing if real
|
|
51
|
+
* repos show useful keys being dropped (§12 of the #2437 plan).
|
|
52
|
+
*
|
|
53
|
+
* Override via `CGRAPH_MAX_PROPERTY_DISPATCH_FANOUT` env var for repos with
|
|
54
|
+
* legitimate high-fanout property keys (e.g. large Vue codebases where
|
|
55
|
+
* `validator` exceeds the default).
|
|
56
|
+
*/
|
|
57
|
+
exports.MAX_PROPERTY_DISPATCH_FANOUT = (() => {
|
|
58
|
+
const env = Number(process.env.CGRAPH_MAX_PROPERTY_DISPATCH_FANOUT);
|
|
59
|
+
return Number.isInteger(env) && env >= 1 ? env : 32;
|
|
60
|
+
})();
|
|
61
|
+
/** Below the 0.85 resolved baseline; same discount idea as interface-dispatch. */
|
|
62
|
+
exports.PROPERTY_DISPATCH_CONFIDENCE = 0.7;
|
|
63
|
+
function emitPropertyDispatchCalls(graph, scopes, parsedFiles, nodeLookup, calleeIdSink) {
|
|
64
|
+
const seen = new Set();
|
|
65
|
+
let usesEmitted = 0;
|
|
66
|
+
// Sweep 1 — resolve every value-ref site: emit the USES registration edge
|
|
67
|
+
// and index dispatchable registrations by property key.
|
|
68
|
+
const registrations = new Map();
|
|
69
|
+
for (const parsed of parsedFiles) {
|
|
70
|
+
for (const site of parsed.referenceSites) {
|
|
71
|
+
if (site.kind !== 'value-ref')
|
|
72
|
+
continue;
|
|
73
|
+
const def = (0, walkers_js_1.findCallableBindingInScope)(site.inScope, site.name, scopes);
|
|
74
|
+
if (def === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const ok = (0, edges_js_1.tryEmitEdge)(graph, scopes, nodeLookup, site, def, 'scope-resolution: value-ref', seen);
|
|
77
|
+
if (ok)
|
|
78
|
+
usesEmitted++;
|
|
79
|
+
if (site.propertyKey === undefined)
|
|
80
|
+
continue;
|
|
81
|
+
let byDef = registrations.get(site.propertyKey);
|
|
82
|
+
if (byDef === undefined) {
|
|
83
|
+
byDef = new Map();
|
|
84
|
+
registrations.set(site.propertyKey, byDef);
|
|
85
|
+
}
|
|
86
|
+
byDef.set(def.nodeId, def);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Keep the dropped key NAMES (bounded) — an over-cap key means no CALLS
|
|
90
|
+
// are synthesized through it, and a count alone leaves the operator unable
|
|
91
|
+
// to tell WHICH hook table lost coverage (#2522 review).
|
|
92
|
+
let skippedKeys = 0;
|
|
93
|
+
const skippedKeyNames = [];
|
|
94
|
+
for (const [key, defs] of registrations) {
|
|
95
|
+
if (defs.size > exports.MAX_PROPERTY_DISPATCH_FANOUT) {
|
|
96
|
+
registrations.delete(key);
|
|
97
|
+
skippedKeys++;
|
|
98
|
+
if (skippedKeyNames.length < 20)
|
|
99
|
+
skippedKeyNames.push(key);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Sweep 2 — synthesize CALLS from member-call sites through registered keys.
|
|
103
|
+
let callsEmitted = 0;
|
|
104
|
+
if (registrations.size > 0) {
|
|
105
|
+
for (const parsed of parsedFiles) {
|
|
106
|
+
const calleeCapture = calleeIdSink !== undefined ? { sink: calleeIdSink, filePath: parsed.filePath } : undefined;
|
|
107
|
+
for (const site of parsed.referenceSites) {
|
|
108
|
+
if (site.kind !== 'call' || site.callForm !== 'member')
|
|
109
|
+
continue;
|
|
110
|
+
const defs = registrations.get(site.name);
|
|
111
|
+
if (defs === undefined)
|
|
112
|
+
continue;
|
|
113
|
+
for (const def of defs.values()) {
|
|
114
|
+
const ok = (0, edges_js_1.tryEmitEdge)(graph, scopes, nodeLookup, site, def, 'property-dispatch', seen, exports.PROPERTY_DISPATCH_CONFIDENCE, false, calleeCapture);
|
|
115
|
+
if (ok)
|
|
116
|
+
callsEmitted++;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return { usesEmitted, callsEmitted, skippedKeys, skippedKeyNames };
|
|
122
|
+
}
|