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,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `composeEvidence` — translate accumulated raw signals per candidate
|
|
4
|
+
* into a `ResolutionEvidence[]` using the authoritative `EvidenceWeights`
|
|
5
|
+
* map (RFC §4.3 + Appendix A; Ring 2 SHARED #917).
|
|
6
|
+
*
|
|
7
|
+
* Each `RawSignals` record describes what was observed about a candidate
|
|
8
|
+
* during the 7-step walk: where it was found, at what depth, whether
|
|
9
|
+
* anything corroborates it. This module turns those raw facts into the
|
|
10
|
+
* typed evidence list attached to the outgoing `Resolution`.
|
|
11
|
+
*
|
|
12
|
+
* **Every weight comes from `EvidenceWeights`.** No inline magic numbers.
|
|
13
|
+
* Extends issue #429 (centralize hardcoded confidence values).
|
|
14
|
+
*
|
|
15
|
+
* **Confidence compose rule.** Signals add; the sum is capped at 1.0 at
|
|
16
|
+
* the call site (inside `lookupCore`). This module only emits the list;
|
|
17
|
+
* it does NOT compute the capped sum so callers can inspect per-signal
|
|
18
|
+
* contributions for debugging.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.composeEvidence = composeEvidence;
|
|
22
|
+
exports.confidenceFromEvidence = confidenceFromEvidence;
|
|
23
|
+
const evidence_weights_js_1 = require("../evidence-weights.js");
|
|
24
|
+
/**
|
|
25
|
+
* Compose the raw signals into a stable `ResolutionEvidence[]` list.
|
|
26
|
+
*
|
|
27
|
+
* Emission order mirrors the `EvidenceWeights` layout: where-found →
|
|
28
|
+
* type-binding → corroborators → arity → degraded. Stable order makes
|
|
29
|
+
* the per-signal contributions easy to reason about in tests.
|
|
30
|
+
*/
|
|
31
|
+
function composeEvidence(signals) {
|
|
32
|
+
const out = [];
|
|
33
|
+
// ── Where-found visibility ─────────────────────────────────────────────
|
|
34
|
+
if (signals.origin !== undefined) {
|
|
35
|
+
const baseWeight = getOriginWeight(signals.origin);
|
|
36
|
+
const capped = signals.viaUnlinkedImport
|
|
37
|
+
? baseWeight * evidence_weights_js_1.EvidenceWeights.unlinkedImportMultiplier
|
|
38
|
+
: baseWeight;
|
|
39
|
+
const evidenceKind = whereFoundEvidenceKind(signals.origin);
|
|
40
|
+
out.push({
|
|
41
|
+
kind: evidenceKind,
|
|
42
|
+
weight: capped,
|
|
43
|
+
...(signals.viaUnlinkedImport
|
|
44
|
+
? { note: `via unresolved import (${evidence_weights_js_1.EvidenceWeights.unlinkedImportMultiplier}× cap)` }
|
|
45
|
+
: {}),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// ── Scope-chain depth deduction (per-hop, only meaningful for lexical
|
|
49
|
+
// hits where scopeChainDepth ≥ 1). Depth 0 = no deduction; depth N ≥ 1
|
|
50
|
+
// emits a single `scope-chain` evidence with the accumulated penalty.
|
|
51
|
+
if (signals.scopeChainDepth !== undefined && signals.scopeChainDepth > 0) {
|
|
52
|
+
out.push({
|
|
53
|
+
kind: 'scope-chain',
|
|
54
|
+
weight: evidence_weights_js_1.EvidenceWeights.scopeChainPerDepth * signals.scopeChainDepth,
|
|
55
|
+
note: `depth=${signals.scopeChainDepth}`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// ── Type-binding / MRO path ────────────────────────────────────────────
|
|
59
|
+
if (signals.typeBindingMroDepth !== undefined) {
|
|
60
|
+
out.push({
|
|
61
|
+
kind: 'type-binding',
|
|
62
|
+
weight: (0, evidence_weights_js_1.typeBindingWeightAtDepth)(signals.typeBindingMroDepth),
|
|
63
|
+
note: `mroDepth=${signals.typeBindingMroDepth}`,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// ── Owner match (explanatory for debug) ────────────────────────────────
|
|
67
|
+
if (signals.ownerMatch === true) {
|
|
68
|
+
out.push({
|
|
69
|
+
kind: 'owner-match',
|
|
70
|
+
weight: evidence_weights_js_1.EvidenceWeights.ownerMatch,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// ── Kind match (always present; weight 0; retained for debuggability) ──
|
|
74
|
+
out.push({
|
|
75
|
+
kind: 'kind-match',
|
|
76
|
+
weight: evidence_weights_js_1.EvidenceWeights.kindMatch,
|
|
77
|
+
});
|
|
78
|
+
// ── Arity ──────────────────────────────────────────────────────────────
|
|
79
|
+
if (signals.arityVerdict !== undefined) {
|
|
80
|
+
const weight = signals.arityVerdict === 'compatible'
|
|
81
|
+
? evidence_weights_js_1.EvidenceWeights.arityMatchCompatible
|
|
82
|
+
: signals.arityVerdict === 'incompatible'
|
|
83
|
+
? evidence_weights_js_1.EvidenceWeights.arityMatchIncompatible
|
|
84
|
+
: evidence_weights_js_1.EvidenceWeights.arityMatchUnknown;
|
|
85
|
+
out.push({
|
|
86
|
+
kind: 'arity-match',
|
|
87
|
+
weight,
|
|
88
|
+
note: signals.arityVerdict,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// ── Dynamic-unresolved (degraded signal) ───────────────────────────────
|
|
92
|
+
if (signals.dynamicUnresolved === true) {
|
|
93
|
+
out.push({
|
|
94
|
+
kind: 'dynamic-import-unresolved',
|
|
95
|
+
weight: evidence_weights_js_1.EvidenceWeights.dynamicImportUnresolved,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Sum evidence weights and clamp to `[0, 1]`. Separate from `composeEvidence`
|
|
102
|
+
* so tests can inspect the raw evidence list.
|
|
103
|
+
*/
|
|
104
|
+
function confidenceFromEvidence(evidence) {
|
|
105
|
+
let sum = 0;
|
|
106
|
+
for (const e of evidence)
|
|
107
|
+
sum += e.weight;
|
|
108
|
+
if (sum < 0)
|
|
109
|
+
return 0;
|
|
110
|
+
if (sum > 1)
|
|
111
|
+
return 1;
|
|
112
|
+
return sum;
|
|
113
|
+
}
|
|
114
|
+
// ─── Internal ───────────────────────────────────────────────────────────────
|
|
115
|
+
function getOriginWeight(origin) {
|
|
116
|
+
switch (origin) {
|
|
117
|
+
case 'local':
|
|
118
|
+
return evidence_weights_js_1.EvidenceWeights.local;
|
|
119
|
+
case 'import':
|
|
120
|
+
return evidence_weights_js_1.EvidenceWeights.import;
|
|
121
|
+
case 'reexport':
|
|
122
|
+
return evidence_weights_js_1.EvidenceWeights.reexport;
|
|
123
|
+
case 'namespace':
|
|
124
|
+
return evidence_weights_js_1.EvidenceWeights.namespace;
|
|
125
|
+
case 'wildcard':
|
|
126
|
+
return evidence_weights_js_1.EvidenceWeights.wildcard;
|
|
127
|
+
case 'global-qualified':
|
|
128
|
+
return evidence_weights_js_1.EvidenceWeights.globalQualified;
|
|
129
|
+
case 'global-name':
|
|
130
|
+
// Reserved for Ring 3 byName global index. `lookupCore` today only
|
|
131
|
+
// emits `'global-qualified'` (via `lookupQualified`, dotted-name
|
|
132
|
+
// fallback); no code path constructs `origin: 'global-name'` yet.
|
|
133
|
+
// Kept here so the Appendix A weight stays live and `composeEvidence`
|
|
134
|
+
// remains exhaustive over the origin union.
|
|
135
|
+
return evidence_weights_js_1.EvidenceWeights.globalName;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function whereFoundEvidenceKind(origin) {
|
|
139
|
+
switch (origin) {
|
|
140
|
+
case 'local':
|
|
141
|
+
return 'local';
|
|
142
|
+
case 'import':
|
|
143
|
+
case 'reexport':
|
|
144
|
+
case 'namespace':
|
|
145
|
+
case 'wildcard':
|
|
146
|
+
return 'import';
|
|
147
|
+
case 'global-qualified':
|
|
148
|
+
return 'global-qualified';
|
|
149
|
+
case 'global-name':
|
|
150
|
+
return 'global-name';
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `FieldRegistry` — scope-aware lookup for field / property / variable
|
|
4
|
+
* access (RFC §4.4; Ring 2 SHARED #917).
|
|
5
|
+
*
|
|
6
|
+
* Thin wrapper over `lookupCore`, specialized for data-member kinds:
|
|
7
|
+
*
|
|
8
|
+
* - `acceptedKinds` = Variable / Property / Const / Static.
|
|
9
|
+
* - `useReceiverTypeBinding` is **true** — fields are resolved against
|
|
10
|
+
* the receiver type's MRO first, then via the lexical chain for
|
|
11
|
+
* free variables.
|
|
12
|
+
* - `callsite` is not meaningful for field access (no arity), but the
|
|
13
|
+
* `explicitReceiver` and `ownerScopedContributor` knobs are.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.buildFieldRegistry = buildFieldRegistry;
|
|
17
|
+
const lookup_core_js_1 = require("./lookup-core.js");
|
|
18
|
+
const context_js_1 = require("./context.js");
|
|
19
|
+
function buildFieldRegistry(ctx) {
|
|
20
|
+
return {
|
|
21
|
+
lookup(name, scope, options = {}) {
|
|
22
|
+
const params = {
|
|
23
|
+
acceptedKinds: context_js_1.FIELD_KINDS,
|
|
24
|
+
useReceiverTypeBinding: true,
|
|
25
|
+
ownerScopedContributor: options.ownerScopedContributor ?? null,
|
|
26
|
+
...(options.explicitReceiver !== undefined
|
|
27
|
+
? { explicitReceiver: options.explicitReceiver }
|
|
28
|
+
: {}),
|
|
29
|
+
};
|
|
30
|
+
return (0, lookup_core_js_1.lookupCore)(name, scope, params, ctx);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `lookupCore` — the shared 7-step canonical resolution algorithm
|
|
4
|
+
* (RFC §4.2; Ring 2 SHARED #917).
|
|
5
|
+
*
|
|
6
|
+
* Pure function. Given a name, a starting scope, and per-kind parameters,
|
|
7
|
+
* walks lexical scopes + optional type-binding MRO + optional owner
|
|
8
|
+
* contributor + global qualified-name fallback, and returns a ranked
|
|
9
|
+
* `Resolution[]` with per-candidate evidence.
|
|
10
|
+
*
|
|
11
|
+
* All three public registries (`ClassRegistry` / `MethodRegistry` /
|
|
12
|
+
* `FieldRegistry`) dispatch into this function, differing only in the
|
|
13
|
+
* parameters they pass. The CHOICE of which steps fire is expressed
|
|
14
|
+
* through `LookupParams`, not through different algorithms per kind.
|
|
15
|
+
*
|
|
16
|
+
* ## Algorithm (RFC §4.2, verbatim names)
|
|
17
|
+
*
|
|
18
|
+
* **Step 1 — Lexical scope-chain walk.** From `startScope`, walk
|
|
19
|
+
* parent-ward. At each scope, consult `scope.bindings.get(name)`:
|
|
20
|
+
* - Filter candidates whose `def.type ∈ acceptedKinds`.
|
|
21
|
+
* - For each surviving candidate, record a raw signal with the
|
|
22
|
+
* binding's origin + the current scope-chain depth.
|
|
23
|
+
* - **Hard shadow.** If `bindings.get(name)` is non-empty (including
|
|
24
|
+
* non-kind-matching candidates), stop walking. The name is
|
|
25
|
+
* lexically bound here; outer scopes are not consulted.
|
|
26
|
+
*
|
|
27
|
+
* **Step 2 — Type-binding resolution.** When `useReceiverTypeBinding`
|
|
28
|
+
* is true, resolve the receiver's type at `startScope` (from
|
|
29
|
+
* `scope.typeBindings`), then walk the MRO via
|
|
30
|
+
* `MethodDispatchIndex.mroFor(ownerDefId)`. Membership per owner comes
|
|
31
|
+
* through an optional `RegistryContext.ownedMembersByOwner` hook when
|
|
32
|
+
* supplied (`undefined` → fall back to `defs.byId`; `[]` → indexed
|
|
33
|
+
* miss), otherwise via the compatibility fallback scan over
|
|
34
|
+
* `defs.byId`; each hit records a raw signal with the owner's
|
|
35
|
+
* MRO depth.
|
|
36
|
+
*
|
|
37
|
+
* **Step 3 — Owner-scoped contributor.** When
|
|
38
|
+
* `params.ownerScopedContributor` is present, merge its `byName(name)`
|
|
39
|
+
* hits with `origin: 'local'` (they are declared directly on the
|
|
40
|
+
* receiver). Distinct from Step 2 — Step 2 walks the MRO; Step 3 only
|
|
41
|
+
* looks at the directly-declared owner members.
|
|
42
|
+
*
|
|
43
|
+
* **Step 4 — Kind filter (emit `kind-match` evidence).** Already
|
|
44
|
+
* applied during Steps 1-3; this step just adds a `kind-match` signal
|
|
45
|
+
* at weight 0 to every candidate for debuggability (so the evidence
|
|
46
|
+
* array is self-describing).
|
|
47
|
+
*
|
|
48
|
+
* **Step 5 — Arity filter.** Call `providers.arityCompatibility(callsite,
|
|
49
|
+
* def)` per surviving candidate. Verdicts: `compatible` / `unknown` /
|
|
50
|
+
* `incompatible`. If at least one candidate is `compatible`, drop
|
|
51
|
+
* `incompatible` ones. Otherwise keep all (the penalty weight alone
|
|
52
|
+
* will rank them lower but they remain in the result).
|
|
53
|
+
*
|
|
54
|
+
* **Step 6 — Global fallback.** When Steps 1-3 produced **no**
|
|
55
|
+
* candidates and the name contains a `.`, consult the
|
|
56
|
+
* `QualifiedNameIndex` via `lookupQualified` — see §4.5. The `scope`
|
|
57
|
+
* argument is NOT passed here because global lookup is scope-agnostic.
|
|
58
|
+
*
|
|
59
|
+
* **Step 7 — Rank + tie-break.** Compose evidence, compute confidence
|
|
60
|
+
* (sum capped at 1.0), sort by the RFC Appendix B cascade.
|
|
61
|
+
*
|
|
62
|
+
* ## What this module does NOT do
|
|
63
|
+
*
|
|
64
|
+
* - No AST reads (pure data in, pure data out).
|
|
65
|
+
* - No `cgraph/` imports.
|
|
66
|
+
* - No language switches. Language-specific behavior flows exclusively
|
|
67
|
+
* through `providers.*` and the `params` object.
|
|
68
|
+
* - No caching. Callers that want memoization can wrap this function.
|
|
69
|
+
*/
|
|
70
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
71
|
+
exports.lookupCore = lookupCore;
|
|
72
|
+
const evidence_js_1 = require("./evidence.js");
|
|
73
|
+
const tie_breaks_js_1 = require("./tie-breaks.js");
|
|
74
|
+
const lookup_qualified_js_1 = require("./lookup-qualified.js");
|
|
75
|
+
/**
|
|
76
|
+
* Run the 7-step lookup. Returns a non-empty `Resolution[]` when any
|
|
77
|
+
* candidate was found; an empty array otherwise. Callers consume `[0]`
|
|
78
|
+
* for the best answer and optionally inspect the rest for alternates.
|
|
79
|
+
*/
|
|
80
|
+
function lookupCore(name, startScope, params, ctx) {
|
|
81
|
+
const acceptedKinds = new Set(params.acceptedKinds);
|
|
82
|
+
const perCandidate = new Map();
|
|
83
|
+
// ── Step 1: lexical scope-chain walk ──────────────────────────────────
|
|
84
|
+
//
|
|
85
|
+
// SKIPPED for a NAMED explicit receiver. `recv.name` names a MEMBER of
|
|
86
|
+
// whatever `recv` denotes; it is not a lexical reference to `name`, so a
|
|
87
|
+
// binding of the bare tail name in an enclosing scope is never the right
|
|
88
|
+
// answer. Steps 2 and 3 (receiver type / owner members) are the routes.
|
|
89
|
+
//
|
|
90
|
+
// Without this, `options.baseUrl` bound to an unrelated function-local
|
|
91
|
+
// `const baseUrl` in the same file. This is the residual half of the defect
|
|
92
|
+
// JS/TS block scopes narrowed in #2699 — blocks moved nested-block locals
|
|
93
|
+
// off the chain, but a local declared directly in the function body stayed
|
|
94
|
+
// on it, and no amount of extra scopes reaches that case.
|
|
95
|
+
//
|
|
96
|
+
// `this` / `self` are deliberately EXEMPT. For a self-receiver the members
|
|
97
|
+
// and the lexical chain legitimately overlap — a class body is itself a
|
|
98
|
+
// scope that binds its members — so Step 1 is a real resolution route
|
|
99
|
+
// there, not a coincidence. Measured on a 762-file corpus: skipping Step 1
|
|
100
|
+
// for every explicit receiver dropped 711 edges, of which 43 were
|
|
101
|
+
// `this.member` reads reaching their own owner. Exempting the self names
|
|
102
|
+
// keeps those and still removes the 668 named-receiver false positives.
|
|
103
|
+
const skipLexical = params.explicitReceiver !== undefined &&
|
|
104
|
+
!IMPLICIT_RECEIVERS.includes(params.explicitReceiver.name);
|
|
105
|
+
const lexicalShadowed = skipLexical
|
|
106
|
+
? false
|
|
107
|
+
: walkLexicalChain(name, startScope, acceptedKinds, ctx, perCandidate);
|
|
108
|
+
// ── Step 2: type-binding / MRO walk (methods/fields) ──────────────────
|
|
109
|
+
if (params.useReceiverTypeBinding && ctx.methodDispatch !== undefined) {
|
|
110
|
+
walkReceiverTypeBinding(name, startScope, acceptedKinds, params, ctx, perCandidate);
|
|
111
|
+
}
|
|
112
|
+
// ── Step 3: owner-scoped contributor ──────────────────────────────────
|
|
113
|
+
if (params.ownerScopedContributor !== null) {
|
|
114
|
+
seedFromOwnerScopedContributor(name, params.ownerScopedContributor, acceptedKinds, perCandidate);
|
|
115
|
+
}
|
|
116
|
+
// ── Step 4: kind-match evidence (emitted by composeEvidence directly) ──
|
|
117
|
+
// Handled inside `composeEvidence`.
|
|
118
|
+
// ── Step 5: arity filter ──────────────────────────────────────────────
|
|
119
|
+
if (params.callsite !== undefined) {
|
|
120
|
+
applyArityFilter(params.callsite, perCandidate, ctx);
|
|
121
|
+
}
|
|
122
|
+
// ── Step 6: global fallback (only when Steps 1-3 produced nothing) ──
|
|
123
|
+
if (perCandidate.size === 0 && !lexicalShadowed && name.includes('.')) {
|
|
124
|
+
const globals = (0, lookup_qualified_js_1.lookupQualified)(name, { acceptedKinds: params.acceptedKinds }, ctx);
|
|
125
|
+
if (globals.length > 0)
|
|
126
|
+
return globals;
|
|
127
|
+
}
|
|
128
|
+
if (perCandidate.size === 0)
|
|
129
|
+
return EMPTY;
|
|
130
|
+
// ── Step 7: compose evidence + rank ──────────────────────────────────
|
|
131
|
+
return rankCandidates(perCandidate);
|
|
132
|
+
}
|
|
133
|
+
function ensureCandidate(perCandidate, def) {
|
|
134
|
+
const existing = perCandidate.get(def.nodeId);
|
|
135
|
+
if (existing !== undefined)
|
|
136
|
+
return existing;
|
|
137
|
+
const fresh = {
|
|
138
|
+
def,
|
|
139
|
+
signals: { kindMatch: true },
|
|
140
|
+
tieBreakKey: { scopeDepth: 0, mroDepth: 0, origin: 'local' },
|
|
141
|
+
};
|
|
142
|
+
perCandidate.set(def.nodeId, fresh);
|
|
143
|
+
return fresh;
|
|
144
|
+
}
|
|
145
|
+
// ─── Step 1 implementation ─────────────────────────────────────────────────
|
|
146
|
+
/**
|
|
147
|
+
* Walk the lexical scope chain from `startScope` upward. Returns `true`
|
|
148
|
+
* iff a scope with any `bindings.get(name)` entries was found — the
|
|
149
|
+
* caller uses this to decide whether to run the global fallback.
|
|
150
|
+
*/
|
|
151
|
+
function walkLexicalChain(name, startScope, acceptedKinds, ctx, perCandidate) {
|
|
152
|
+
let currentId = startScope;
|
|
153
|
+
let depth = 0;
|
|
154
|
+
const visited = new Set();
|
|
155
|
+
while (currentId !== null) {
|
|
156
|
+
if (visited.has(currentId))
|
|
157
|
+
return false;
|
|
158
|
+
visited.add(currentId);
|
|
159
|
+
const scope = ctx.scopes.getScope(currentId);
|
|
160
|
+
if (scope === undefined)
|
|
161
|
+
return false;
|
|
162
|
+
const bindings = scope.bindings.get(name);
|
|
163
|
+
if (bindings !== undefined && bindings.length > 0) {
|
|
164
|
+
for (const binding of bindings) {
|
|
165
|
+
if (!acceptedKinds.has(binding.def.type))
|
|
166
|
+
continue;
|
|
167
|
+
recordLexicalHit(perCandidate, binding, depth);
|
|
168
|
+
}
|
|
169
|
+
return true; // hard shadow regardless of kind-filter survivorship
|
|
170
|
+
}
|
|
171
|
+
currentId = scope.parent;
|
|
172
|
+
depth++;
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
function recordLexicalHit(perCandidate, binding, scopeChainDepth) {
|
|
177
|
+
const state = ensureCandidate(perCandidate, binding.def);
|
|
178
|
+
state.signals.origin = binding.origin;
|
|
179
|
+
state.signals.scopeChainDepth = scopeChainDepth;
|
|
180
|
+
if (binding.via?.linkStatus === 'unresolved') {
|
|
181
|
+
state.signals.viaUnlinkedImport = true;
|
|
182
|
+
}
|
|
183
|
+
if (binding.via?.kind === 'dynamic-unresolved') {
|
|
184
|
+
state.signals.dynamicUnresolved = true;
|
|
185
|
+
}
|
|
186
|
+
state.tieBreakKey.scopeDepth = scopeChainDepth;
|
|
187
|
+
state.tieBreakKey.origin = binding.origin;
|
|
188
|
+
}
|
|
189
|
+
// ─── Step 2 implementation ─────────────────────────────────────────────────
|
|
190
|
+
function walkReceiverTypeBinding(name, startScope, acceptedKinds, params, ctx, perCandidate) {
|
|
191
|
+
const ownerDefId = resolveReceiverOwner(startScope, params, ctx);
|
|
192
|
+
if (ownerDefId === undefined)
|
|
193
|
+
return;
|
|
194
|
+
if (ctx.methodDispatch === undefined)
|
|
195
|
+
return;
|
|
196
|
+
const ownerDef = ctx.defs.get(ownerDefId);
|
|
197
|
+
if (ownerDef === undefined)
|
|
198
|
+
return;
|
|
199
|
+
// Walk the owner itself at depth 0, then its MRO chain.
|
|
200
|
+
const walk = [ownerDefId, ...ctx.methodDispatch.mroFor(ownerDefId)];
|
|
201
|
+
let mroDepth = 0;
|
|
202
|
+
for (const currentOwnerId of walk) {
|
|
203
|
+
const members = collectOwnedMembers(currentOwnerId, name, ctx);
|
|
204
|
+
for (const def of members) {
|
|
205
|
+
if (!acceptedKinds.has(def.type))
|
|
206
|
+
continue;
|
|
207
|
+
recordTypeBindingHit(perCandidate, def, mroDepth, ownerDefId);
|
|
208
|
+
}
|
|
209
|
+
mroDepth++;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function resolveReceiverOwner(startScope, params, ctx) {
|
|
213
|
+
// Explicit receiver: consult the callsite scope's typeBindings for the
|
|
214
|
+
// named receiver; the attached TypeRef identifies the owner. Without a
|
|
215
|
+
// ready resolveTypeRef call (that module is separate), we do a direct
|
|
216
|
+
// lookup and trust the caller to have populated the binding.
|
|
217
|
+
if (params.explicitReceiver !== undefined) {
|
|
218
|
+
return lookupReceiverType(startScope, params.explicitReceiver.name, ctx);
|
|
219
|
+
}
|
|
220
|
+
// Implicit `self` / `this` — the scope's typeBindings should carry it.
|
|
221
|
+
for (const implicitName of IMPLICIT_RECEIVERS) {
|
|
222
|
+
const owner = lookupReceiverType(startScope, implicitName, ctx);
|
|
223
|
+
if (owner !== undefined)
|
|
224
|
+
return owner;
|
|
225
|
+
}
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Names that denote the enclosing instance rather than an arbitrary object.
|
|
230
|
+
*
|
|
231
|
+
* Two consumers, and both want the same set: `resolveReceiverOwner` above
|
|
232
|
+
* tries them when no explicit receiver is present, and the Step-1 skip in
|
|
233
|
+
* `lookupCore` exempts them because for a SELF receiver the members and the
|
|
234
|
+
* lexical chain legitimately overlap — a class body is itself a scope that
|
|
235
|
+
* binds its members — whereas for a named receiver they never do.
|
|
236
|
+
*
|
|
237
|
+
* `$this` is matched because the receiver name arrives as the reference node's
|
|
238
|
+
* RAW SOURCE TEXT (`extractExplicitReceiver` returns `cap.text` verbatim), so
|
|
239
|
+
* PHP's `$this->x` presents as `"$this"`, sigil included. Listing the spelling
|
|
240
|
+
* keeps this a data table rather than a language switch — this module resolves
|
|
241
|
+
* language behaviour through `providers.*` and `params` only (see the header)
|
|
242
|
+
* — and it follows the ingestion-side twin, `THIS_RECEIVERS` in
|
|
243
|
+
* `cgraph/src/core/ingestion/type-env.ts`, which has always listed the
|
|
244
|
+
* sigil'd spelling rather than stripping it. Stripping would carry the same
|
|
245
|
+
* false-positive surface anyway (a JS variable literally named `$this`).
|
|
246
|
+
*
|
|
247
|
+
* That twin also lists `Me`, deliberately NOT mirrored here: no entry in
|
|
248
|
+
* `SupportedLanguages` uses it, so it can only ever exempt a variable that
|
|
249
|
+
* happens to be called `Me`. The two lists are otherwise the same set, and
|
|
250
|
+
* that equality — plus the `Me` exemption in both directions — is now ENFORCED
|
|
251
|
+
* by `cgraph/test/unit/receiver-twin-list-drift.test.ts`. Editing either list
|
|
252
|
+
* without the other fails there.
|
|
253
|
+
*/
|
|
254
|
+
const IMPLICIT_RECEIVERS = Object.freeze(['self', 'this', '$this']);
|
|
255
|
+
function lookupReceiverType(startScope, receiverName, ctx) {
|
|
256
|
+
let currentId = startScope;
|
|
257
|
+
const visited = new Set();
|
|
258
|
+
while (currentId !== null) {
|
|
259
|
+
if (visited.has(currentId))
|
|
260
|
+
return undefined;
|
|
261
|
+
visited.add(currentId);
|
|
262
|
+
const scope = ctx.scopes.getScope(currentId);
|
|
263
|
+
if (scope === undefined)
|
|
264
|
+
return undefined;
|
|
265
|
+
const typeRef = scope.typeBindings.get(receiverName);
|
|
266
|
+
if (typeRef !== undefined) {
|
|
267
|
+
// rawName must resolve to a def via qualifiedNames; if it doesn't, we
|
|
268
|
+
// can't claim the receiver type. No fallback — that's what
|
|
269
|
+
// `resolveTypeRef` would do, but we keep this path lean and let
|
|
270
|
+
// callers pre-resolve if they want the richer semantics.
|
|
271
|
+
const candidateIds = ctx.qualifiedNames.get(typeRef.rawName);
|
|
272
|
+
if (candidateIds.length === 1)
|
|
273
|
+
return candidateIds[0];
|
|
274
|
+
// Ambiguous (≥ 2) or missing (0) — caller must pre-resolve via
|
|
275
|
+
// `resolveTypeRef` (#916) if they want the richer semantics. We
|
|
276
|
+
// intentionally do NOT re-implement a simple-name fallback here.
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
// The scope binds this receiver itself but carries no type for it — a
|
|
280
|
+
// JS/TS ordinary `function` whose `this` is bound at call time, not the
|
|
281
|
+
// enclosing instance (#2701). Stop rather than borrowing an enclosing
|
|
282
|
+
// scope's binding; see `Scope.ownsReceivers`. Mirrors the same gate in
|
|
283
|
+
// the ingestion-side twin of this walk, `findReceiverTypeBinding`.
|
|
284
|
+
if (scope.ownsReceivers?.has(receiverName) === true)
|
|
285
|
+
return undefined;
|
|
286
|
+
currentId = scope.parent;
|
|
287
|
+
}
|
|
288
|
+
return undefined;
|
|
289
|
+
}
|
|
290
|
+
function collectOwnedMembers(ownerDefId, memberName, ctx) {
|
|
291
|
+
return ctx.ownedMembersByOwner(ownerDefId, memberName);
|
|
292
|
+
}
|
|
293
|
+
function recordTypeBindingHit(perCandidate, def, mroDepth, receiverOwner) {
|
|
294
|
+
const state = ensureCandidate(perCandidate, def);
|
|
295
|
+
const existingMroDepth = state.signals.typeBindingMroDepth;
|
|
296
|
+
const firstHit = existingMroDepth === undefined;
|
|
297
|
+
// Only replace if this hit is shallower (smaller MRO depth). The local
|
|
298
|
+
// const lets TS narrow to `number` in the `else` branch so no `!`
|
|
299
|
+
// assertion is needed.
|
|
300
|
+
if (firstHit || mroDepth < existingMroDepth) {
|
|
301
|
+
state.signals.typeBindingMroDepth = mroDepth;
|
|
302
|
+
state.tieBreakKey.mroDepth = mroDepth;
|
|
303
|
+
}
|
|
304
|
+
if (def.ownerId === receiverOwner) {
|
|
305
|
+
state.signals.ownerMatch = true;
|
|
306
|
+
}
|
|
307
|
+
// Pure type-binding candidates (no lexical hit) would otherwise keep the
|
|
308
|
+
// `ensureCandidate` default `tieBreakKey.origin === 'local'`, making the
|
|
309
|
+
// Appendix B cascade lump them with local-origin candidates. Demote them
|
|
310
|
+
// to `'import'` — the strongest non-local origin — only when no earlier
|
|
311
|
+
// phase set an origin for this candidate. Lexical hits from Step 1 set
|
|
312
|
+
// `signals.origin` before Step 2 runs, so the guard skips them; Step 3
|
|
313
|
+
// (`seedFromOwnerScopedContributor`) runs AFTER Step 2 and unconditionally
|
|
314
|
+
// overrides `tieBreakKey.origin` back to `'local'` for direct-owner
|
|
315
|
+
// members, so any same-def overlap still ends up ranked correctly.
|
|
316
|
+
if (firstHit && state.signals.origin === undefined) {
|
|
317
|
+
state.tieBreakKey.origin = 'import';
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// ─── Step 3 implementation ─────────────────────────────────────────────────
|
|
321
|
+
function seedFromOwnerScopedContributor(name, contributor, acceptedKinds, perCandidate) {
|
|
322
|
+
for (const def of contributor.byName(name)) {
|
|
323
|
+
if (!acceptedKinds.has(def.type))
|
|
324
|
+
continue;
|
|
325
|
+
const state = ensureCandidate(perCandidate, def);
|
|
326
|
+
// Treat the contributor's direct membership as `origin: 'local'` —
|
|
327
|
+
// strongest visibility, no scope-chain penalty.
|
|
328
|
+
state.signals.origin = 'local';
|
|
329
|
+
state.signals.scopeChainDepth = 0;
|
|
330
|
+
state.signals.ownerMatch = def.ownerId === contributor.ownerDefId;
|
|
331
|
+
state.tieBreakKey.origin = 'local';
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// ─── Step 5 implementation ─────────────────────────────────────────────────
|
|
335
|
+
function applyArityFilter(callsite, perCandidate, ctx) {
|
|
336
|
+
const arityFn = ctx.providers.arityCompatibility;
|
|
337
|
+
if (arityFn === undefined) {
|
|
338
|
+
// No provider → record 'unknown' for every candidate; keeps signal
|
|
339
|
+
// shape uniform for composeEvidence.
|
|
340
|
+
for (const state of perCandidate.values()) {
|
|
341
|
+
state.signals.arityVerdict = 'unknown';
|
|
342
|
+
}
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
let anyCompatible = false;
|
|
346
|
+
let anyUnknown = false;
|
|
347
|
+
for (const state of perCandidate.values()) {
|
|
348
|
+
const verdict = arityFn(callsite, state.def);
|
|
349
|
+
state.signals.arityVerdict = verdict;
|
|
350
|
+
if (verdict === 'compatible')
|
|
351
|
+
anyCompatible = true;
|
|
352
|
+
else if (verdict === 'unknown')
|
|
353
|
+
anyUnknown = true;
|
|
354
|
+
}
|
|
355
|
+
// When ALL candidates are 'incompatible' (none compatible, none unknown),
|
|
356
|
+
// the call is genuinely arity-broken — drop every candidate so the
|
|
357
|
+
// registry returns no resolution. This matches the PHP variadic case
|
|
358
|
+
// f(int $req, ...$rest) called with zero args: every candidate definitively
|
|
359
|
+
// rejects, and emitting an edge to a definitively-rejected callable is
|
|
360
|
+
// a false positive. When some candidates are 'unknown' (missing metadata),
|
|
361
|
+
// keep the set so downstream evidence can break the tie — that's the
|
|
362
|
+
// original safety-fallback behavior.
|
|
363
|
+
if (!anyCompatible) {
|
|
364
|
+
if (!anyUnknown) {
|
|
365
|
+
for (const defId of perCandidate.keys()) {
|
|
366
|
+
perCandidate.delete(defId);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
// Filter: when at least one compatible candidate exists, drop incompatibles.
|
|
372
|
+
for (const [defId, state] of perCandidate) {
|
|
373
|
+
if (state.signals.arityVerdict === 'incompatible') {
|
|
374
|
+
perCandidate.delete(defId);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// ─── Step 7 implementation ─────────────────────────────────────────────────
|
|
379
|
+
function rankCandidates(perCandidate) {
|
|
380
|
+
const resolutions = [];
|
|
381
|
+
const tieKeys = new Map();
|
|
382
|
+
for (const state of perCandidate.values()) {
|
|
383
|
+
const evidence = (0, evidence_js_1.composeEvidence)(state.signals);
|
|
384
|
+
const confidence = (0, evidence_js_1.confidenceFromEvidence)(evidence);
|
|
385
|
+
resolutions.push({ def: state.def, confidence, evidence });
|
|
386
|
+
tieKeys.set(state.def.nodeId, { ...state.tieBreakKey });
|
|
387
|
+
}
|
|
388
|
+
resolutions.sort((a, b) => (0, tie_breaks_js_1.compareByConfidenceWithTiebreaks)(a, b, tieKeys));
|
|
389
|
+
return Object.freeze(resolutions);
|
|
390
|
+
}
|
|
391
|
+
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
392
|
+
const EMPTY = Object.freeze([]);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `lookupQualified` — qualified-name fast path (RFC §4.5; Ring 2 SHARED #917).
|
|
4
|
+
*
|
|
5
|
+
* Consults `QualifiedNameIndex` directly, filters by `acceptedKinds`, and
|
|
6
|
+
* returns `Resolution[]` with `origin: 'global-qualified'` evidence. Used by:
|
|
7
|
+
*
|
|
8
|
+
* - `resolveTypeRef` dotted fallback (#916)
|
|
9
|
+
* - `Registry.lookup` Step 6 when no lexical candidate survived
|
|
10
|
+
* - Explicit dotted identifiers in Cypher / MCP tools where the caller
|
|
11
|
+
* knows the target's canonical qualified name
|
|
12
|
+
*
|
|
13
|
+
* **Strict + deterministic.** No receiver-type resolution, no scope walk.
|
|
14
|
+
* Every surviving candidate gets the same base confidence (from
|
|
15
|
+
* `EvidenceWeights.globalQualified`), then the tie-break cascade
|
|
16
|
+
* disambiguates.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.lookupQualified = lookupQualified;
|
|
20
|
+
const evidence_js_1 = require("./evidence.js");
|
|
21
|
+
const tie_breaks_js_1 = require("./tie-breaks.js");
|
|
22
|
+
/**
|
|
23
|
+
* Look up a canonical qualified name (e.g., `app.models.User`) across all
|
|
24
|
+
* defs, filtered by `acceptedKinds`. Returns an empty array when the name
|
|
25
|
+
* is not indexed or no candidate matches the kind filter.
|
|
26
|
+
*
|
|
27
|
+
* Callers consume `[0]` for the strict single-return answer; the remainder
|
|
28
|
+
* carries alternate candidates (partial classes, overloads, accidental
|
|
29
|
+
* cross-kind hits) ordered by the tie-break cascade.
|
|
30
|
+
*/
|
|
31
|
+
function lookupQualified(qualifiedName, params, ctx) {
|
|
32
|
+
const defIds = ctx.qualifiedNames.get(qualifiedName);
|
|
33
|
+
if (defIds.length === 0)
|
|
34
|
+
return EMPTY;
|
|
35
|
+
const acceptedKinds = new Set(params.acceptedKinds);
|
|
36
|
+
const resolutions = [];
|
|
37
|
+
const tieKeys = new Map();
|
|
38
|
+
for (const defId of defIds) {
|
|
39
|
+
const def = ctx.defs.get(defId);
|
|
40
|
+
if (def === undefined)
|
|
41
|
+
continue;
|
|
42
|
+
if (!acceptedKinds.has(def.type))
|
|
43
|
+
continue;
|
|
44
|
+
const evidence = (0, evidence_js_1.composeEvidence)({ origin: 'global-qualified', kindMatch: true });
|
|
45
|
+
const confidence = (0, evidence_js_1.confidenceFromEvidence)(evidence);
|
|
46
|
+
resolutions.push({ def, confidence, evidence });
|
|
47
|
+
tieKeys.set(def.nodeId, {
|
|
48
|
+
scopeDepth: 0,
|
|
49
|
+
mroDepth: 0,
|
|
50
|
+
origin: 'global-qualified',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (resolutions.length === 0)
|
|
54
|
+
return EMPTY;
|
|
55
|
+
resolutions.sort((a, b) => (0, tie_breaks_js_1.compareByConfidenceWithTiebreaks)(a, b, tieKeys));
|
|
56
|
+
return Object.freeze(resolutions);
|
|
57
|
+
}
|
|
58
|
+
const EMPTY = Object.freeze([]);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `MacroRegistry` — scope-aware lookup for macro definitions
|
|
4
|
+
* (`macro_rules!` in Rust; `#define` in C/C++) referenced from a macro
|
|
5
|
+
* invocation site.
|
|
6
|
+
*
|
|
7
|
+
* Thin wrapper over `lookupCore`, specialized for the macro namespace:
|
|
8
|
+
*
|
|
9
|
+
* - `acceptedKinds` = `MACRO_KINDS` (`['Macro']` only). Crucially this
|
|
10
|
+
* does NOT include `Function`/`Method`, so a `log!(…)` invocation can
|
|
11
|
+
* never resolve to a same-named free function `fn log` — macros and
|
|
12
|
+
* functions are disjoint namespaces (the false-`CALLS`-edge class the
|
|
13
|
+
* #1934 review flagged).
|
|
14
|
+
* - `useReceiverTypeBinding` is **false** — a macro invocation has no
|
|
15
|
+
* receiver; resolution is name-through-the-lexical-chain + the global
|
|
16
|
+
* qualified fallback, exactly like `ClassRegistry`.
|
|
17
|
+
* - Arity is not applied — macros are variadic by nature.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.buildMacroRegistry = buildMacroRegistry;
|
|
21
|
+
const lookup_core_js_1 = require("./lookup-core.js");
|
|
22
|
+
const context_js_1 = require("./context.js");
|
|
23
|
+
function buildMacroRegistry(ctx) {
|
|
24
|
+
const params = {
|
|
25
|
+
acceptedKinds: context_js_1.MACRO_KINDS,
|
|
26
|
+
useReceiverTypeBinding: false,
|
|
27
|
+
ownerScopedContributor: null,
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
lookup(name, scope) {
|
|
31
|
+
return (0, lookup_core_js_1.lookupCore)(name, scope, params, ctx);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|