cgraphx 2.0.1 → 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/.claude-template/FLOW-MAP.md +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- 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/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.js.map +1 -1
- 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,492 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emitGoScopeCaptures = emitGoScopeCaptures;
|
|
4
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
5
|
+
const query_js_1 = require("./query.js");
|
|
6
|
+
const cache_stats_js_1 = require("./cache-stats.js");
|
|
7
|
+
const arity_metadata_js_1 = require("./arity-metadata.js");
|
|
8
|
+
const import_decomposer_js_1 = require("./import-decomposer.js");
|
|
9
|
+
const receiver_binding_js_1 = require("./receiver-binding.js");
|
|
10
|
+
const type_binding_js_1 = require("./type-binding.js");
|
|
11
|
+
const constants_js_1 = require("../../constants.js");
|
|
12
|
+
const safe_parse_js_1 = require("../../../tree-sitter/safe-parse.js");
|
|
13
|
+
const callable_flow_captures_js_1 = require("../../utils/callable-flow-captures.js");
|
|
14
|
+
const receiver_chain_captures_js_1 = require("../../utils/receiver-chain-captures.js");
|
|
15
|
+
/** Range for a capture that marks no source span. */
|
|
16
|
+
const ZERO_RANGE = Object.freeze({ startLine: 0, startCol: 0, endLine: 0, endCol: 0 });
|
|
17
|
+
/**
|
|
18
|
+
* The callee-position marker, allocated once for the whole process.
|
|
19
|
+
*
|
|
20
|
+
* This capture is a PRESENCE FLAG, not a payload: `scope-extractor.ts` reads it
|
|
21
|
+
* only as `match['@reference.callee-position'] !== undefined`, and the tag is
|
|
22
|
+
* listed in `KNOWN_SUB_TAGS`, so `anchorCaptureFor` never considers its range
|
|
23
|
+
* when picking a reference anchor. Nothing else in the pipeline touches it.
|
|
24
|
+
* (Its range used to duplicate `@reference.read`'s exactly, and that capture is
|
|
25
|
+
* still emitted, so the one place that scans every capture's range — the
|
|
26
|
+
* synthetic Module-scope span in `scope-extractor.ts` — sees the same maximum.)
|
|
27
|
+
*
|
|
28
|
+
* Minting it per site from the read node was therefore pure cost, and not a
|
|
29
|
+
* cheap one: `node.text` is an `input.substring` behind N-API index marshals,
|
|
30
|
+
* and `startPosition` / `endPosition` are two more round-trips each. A frozen
|
|
31
|
+
* singleton carries exactly the same information — its presence — for free.
|
|
32
|
+
*/
|
|
33
|
+
const CALLEE_POSITION_MARKER = Object.freeze({
|
|
34
|
+
name: '@reference.callee-position',
|
|
35
|
+
range: ZERO_RANGE,
|
|
36
|
+
text: '',
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Presence-only marker for an embedded field written as `*T` rather than `T`.
|
|
40
|
+
*
|
|
41
|
+
* Go's method-set rules treat the two forms differently — `S{T}` promotes only
|
|
42
|
+
* the value-receiver methods of `T` into `MS(S)`, while `S{*T}` promotes both
|
|
43
|
+
* value- and pointer-receiver ones (go.dev/ref/spec#Struct_types). Structural
|
|
44
|
+
* interface detection cannot give an exact answer without knowing which was
|
|
45
|
+
* written, so the spelling is recorded here and interpreted downstream.
|
|
46
|
+
*/
|
|
47
|
+
const EMBEDDED_POINTER_MARKER = Object.freeze({
|
|
48
|
+
name: '@reference.embedded-pointer',
|
|
49
|
+
range: ZERO_RANGE,
|
|
50
|
+
text: '',
|
|
51
|
+
});
|
|
52
|
+
const GO_CALLABLE_CAPTURE_OPTIONS = {
|
|
53
|
+
functionNodeTypes: new Set(['function_declaration', 'method_declaration', 'func_literal']),
|
|
54
|
+
callNodeTypes: new Set(['call_expression']),
|
|
55
|
+
parameterListNodeTypes: new Set(['parameter_list', 'argument_list']),
|
|
56
|
+
parameterNodeTypes: new Set(['parameter_declaration', 'variadic_parameter_declaration']),
|
|
57
|
+
bindingNodeTypes: new Set(['short_var_declaration', 'var_spec']),
|
|
58
|
+
assignmentNodeTypes: new Set(['assignment_statement']),
|
|
59
|
+
identifierNodeTypes: new Set(['identifier', 'field_identifier', 'package_identifier']),
|
|
60
|
+
// Multi-value forms (`a, b := f, g`) pair LHS/RHS expression_list entries
|
|
61
|
+
// positionally — the shared field fallback cross-wired first-LHS with
|
|
62
|
+
// last-RHS and synthesized a garbage comma-joined qualified name (#2522
|
|
63
|
+
// review). A length mismatch (multi-return call RHS) recognizes the node
|
|
64
|
+
// but emits nothing.
|
|
65
|
+
extractAssignment: (node) => {
|
|
66
|
+
if (node.type !== 'short_var_declaration' && node.type !== 'assignment_statement') {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const left = node.childForFieldName('left');
|
|
70
|
+
const right = node.childForFieldName('right');
|
|
71
|
+
if (left === null || right === null)
|
|
72
|
+
return undefined;
|
|
73
|
+
if (left.type !== 'expression_list' || right.type !== 'expression_list')
|
|
74
|
+
return undefined;
|
|
75
|
+
const destinations = left.namedChildren.filter((child) => child !== null);
|
|
76
|
+
const sources = right.namedChildren.filter((child) => child !== null);
|
|
77
|
+
if (destinations.length <= 1 && sources.length <= 1)
|
|
78
|
+
return undefined;
|
|
79
|
+
if (destinations.length !== sources.length)
|
|
80
|
+
return [];
|
|
81
|
+
return destinations.map((destination, index) => ({ destination, source: sources[index] }));
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Is this `selector_expression` in CALLEE position — the `function` child of an
|
|
86
|
+
* enclosing `call_expression` — rather than free-standing?
|
|
87
|
+
*
|
|
88
|
+
* `h.dep.Work` in `h.dep.Work()` is in callee position; `f := h.dep.Work` (a
|
|
89
|
+
* method value, or a func-typed field value) is not.
|
|
90
|
+
*
|
|
91
|
+
* Callee position alone does NOT make the selector a non-read. Go dispatches
|
|
92
|
+
* `h.dep.Work()` through a func-typed struct field just as readily as through a
|
|
93
|
+
* method, and this predicate cannot tell the two apart — `call_expression` has
|
|
94
|
+
* the same shape either way, and the tail's declaration may live in another
|
|
95
|
+
* package. See {@link emitGoScopeCaptures} for what is done with the answer.
|
|
96
|
+
*/
|
|
97
|
+
function isCalleeOfMemberCall(node) {
|
|
98
|
+
const parent = node.parent;
|
|
99
|
+
if (parent === null || parent.type !== 'call_expression')
|
|
100
|
+
return false;
|
|
101
|
+
return parent.childForFieldName('function')?.id === node.id;
|
|
102
|
+
}
|
|
103
|
+
function emitGoScopeCaptures(sourceText, _filePath, cachedTree) {
|
|
104
|
+
let tree = cachedTree;
|
|
105
|
+
if (tree === undefined) {
|
|
106
|
+
tree = (0, safe_parse_js_1.parseSourceSafe)((0, query_js_1.getGoParser)(), sourceText, undefined, {
|
|
107
|
+
bufferSize: (0, constants_js_1.getTreeSitterBufferSize)(sourceText),
|
|
108
|
+
});
|
|
109
|
+
(0, cache_stats_js_1.recordGoCacheMiss)();
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
(0, cache_stats_js_1.recordGoCacheHit)();
|
|
113
|
+
}
|
|
114
|
+
const rawMatches = (0, query_js_1.getGoScopeQuery)().matches(tree.rootNode);
|
|
115
|
+
const out = [];
|
|
116
|
+
for (const m of rawMatches) {
|
|
117
|
+
const grouped = {};
|
|
118
|
+
// Parallel tag -> captured SyntaxNode map. The tree-sitter query already
|
|
119
|
+
// hands us the matched node as `c.node`; keeping it here lets us derive the
|
|
120
|
+
// anchor/relative node by walking LOCALLY (parent chain / own subtree)
|
|
121
|
+
// instead of re-walking from tree.rootNode (the O(matches x rootChildren)
|
|
122
|
+
// hotpath that made #1848's 250-struct DAO file take ~10s). The captured
|
|
123
|
+
// node either IS the node the old findNodeAtRange re-derived, or is a close
|
|
124
|
+
// relative reachable by a bounded local walk.
|
|
125
|
+
const nodeMap = {};
|
|
126
|
+
for (const c of m.captures) {
|
|
127
|
+
const tag = '@' + c.name;
|
|
128
|
+
if (tag.startsWith('@_'))
|
|
129
|
+
continue; // skip anonymous captures
|
|
130
|
+
grouped[tag] = (0, ast_helpers_js_1.nodeToCapture)(tag, c.node);
|
|
131
|
+
nodeMap[tag] = c.node;
|
|
132
|
+
}
|
|
133
|
+
if (Object.keys(grouped).length === 0)
|
|
134
|
+
continue;
|
|
135
|
+
if (grouped['@import.statement'] !== undefined) {
|
|
136
|
+
// The captured node is the `import_spec`; the original code preferred its
|
|
137
|
+
// enclosing `import_declaration` ONLY when that ancestor shares the exact
|
|
138
|
+
// same range (which never happens — the declaration always includes the
|
|
139
|
+
// `import` keyword prefix — so it falls back to the import_spec itself).
|
|
140
|
+
// Replicate that exactly via a local ancestor walk, never from root.
|
|
141
|
+
const importNode = resolveImportNode(nodeMap['@import.statement']);
|
|
142
|
+
if (importNode !== null) {
|
|
143
|
+
out.push(...(0, import_decomposer_js_1.splitGoImportStatement)(importNode));
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (grouped['@scope.function'] !== undefined) {
|
|
148
|
+
// @scope.function captures function_declaration | method_declaration |
|
|
149
|
+
// func_literal. The original looked for a function_declaration or
|
|
150
|
+
// method_declaration at the captured range; the captured node IS that
|
|
151
|
+
// node for the first two, and a func_literal never coincides in range
|
|
152
|
+
// with either, so the lookup yields null for func_literal.
|
|
153
|
+
const scopeNode = nodeMap['@scope.function'];
|
|
154
|
+
const fnNode = scopeNode.type === 'function_declaration' || scopeNode.type === 'method_declaration'
|
|
155
|
+
? scopeNode
|
|
156
|
+
: null;
|
|
157
|
+
if (fnNode !== null) {
|
|
158
|
+
const receiver = (0, receiver_binding_js_1.synthesizeGoReceiverBinding)(fnNode);
|
|
159
|
+
if (receiver !== null)
|
|
160
|
+
out.push(receiver);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (isRawMultiAssignTypeBinding(nodeMap))
|
|
164
|
+
continue;
|
|
165
|
+
normalizeGenericConstructorCapture(nodeMap, grouped);
|
|
166
|
+
const declAnchorNode = nodeMap['@declaration.function'] ?? nodeMap['@declaration.method'];
|
|
167
|
+
if (declAnchorNode !== undefined) {
|
|
168
|
+
// @declaration.function / @declaration.method are captured directly on
|
|
169
|
+
// the function_declaration / method_declaration node.
|
|
170
|
+
const fnNode = declAnchorNode.type === 'function_declaration' ||
|
|
171
|
+
declAnchorNode.type === 'method_declaration' ||
|
|
172
|
+
declAnchorNode.type === 'method_elem'
|
|
173
|
+
? declAnchorNode
|
|
174
|
+
: null;
|
|
175
|
+
if (fnNode !== null) {
|
|
176
|
+
const arity = (0, arity_metadata_js_1.computeGoDeclarationArity)(fnNode);
|
|
177
|
+
if (arity.parameterCount !== undefined) {
|
|
178
|
+
grouped['@declaration.parameter-count'] = (0, ast_helpers_js_1.syntheticCapture)('@declaration.parameter-count', fnNode, String(arity.parameterCount));
|
|
179
|
+
}
|
|
180
|
+
if (arity.requiredParameterCount !== undefined) {
|
|
181
|
+
grouped['@declaration.required-parameter-count'] = (0, ast_helpers_js_1.syntheticCapture)('@declaration.required-parameter-count', fnNode, String(arity.requiredParameterCount));
|
|
182
|
+
}
|
|
183
|
+
if (arity.parameterTypes !== undefined) {
|
|
184
|
+
grouped['@declaration.parameter-types'] = (0, ast_helpers_js_1.syntheticCapture)('@declaration.parameter-types', fnNode, JSON.stringify(arity.parameterTypes));
|
|
185
|
+
}
|
|
186
|
+
if (arity.returnType !== undefined) {
|
|
187
|
+
grouped['@declaration.return-type'] = (0, ast_helpers_js_1.syntheticCapture)('@declaration.return-type', fnNode, arity.returnType);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
191
|
+
// expression, so resolution can type it by folding over structure
|
|
192
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
193
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
194
|
+
// all leave `grouped` untouched.
|
|
195
|
+
(0, receiver_chain_captures_js_1.synthesizeReceiverChainCapture)(grouped, nodeMap['@reference.receiver']);
|
|
196
|
+
out.push(grouped);
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
// @reference.call.free / .member are captured on the call_expression;
|
|
200
|
+
// @reference.call.constructor on the composite_literal. The captured node
|
|
201
|
+
// IS the node the old findNodeAtRange re-derived for each, so use it.
|
|
202
|
+
const callNode = nodeMap['@reference.call.free'] ??
|
|
203
|
+
nodeMap['@reference.call.member'] ??
|
|
204
|
+
nodeMap['@reference.call.constructor'];
|
|
205
|
+
if (callNode !== undefined && grouped['@reference.arity'] === undefined) {
|
|
206
|
+
if (callNode.type === 'call_expression' || callNode.type === 'composite_literal') {
|
|
207
|
+
grouped['@reference.arity'] = (0, ast_helpers_js_1.syntheticCapture)('@reference.arity', callNode, String((0, arity_metadata_js_1.computeGoCallArity)(callNode)));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Mark — do NOT drop — the read site on a member call's callee.
|
|
211
|
+
//
|
|
212
|
+
// The `@reference.read` pattern matches every `selector_expression`, so
|
|
213
|
+
// `h.dep.Work()` yields THREE sites: the call on `Work`, a read on the inner
|
|
214
|
+
// `h.dep` (the genuine field read), and a read on the OUTER `h.dep.Work`.
|
|
215
|
+
//
|
|
216
|
+
// That third site is a phantom ONLY when `Work` is a method: it then
|
|
217
|
+
// resolves through `findOwnedMember` (which prefers methods over fields) and
|
|
218
|
+
// emits an ACCESSES edge to the METHOD duplicating the CALLS edge at the
|
|
219
|
+
// same position — `v.impl.DoWork()` emitting both `CALLS -> DoWork` and
|
|
220
|
+
// `ACCESSES -> DoWork`.
|
|
221
|
+
//
|
|
222
|
+
// When `Work` is a FUNC-TYPED STRUCT FIELD (`Work func() error` — callback
|
|
223
|
+
// structs, hook structs, hand-rolled mocks) the very same syntax is a
|
|
224
|
+
// genuine field read followed by an indirect call through the value it
|
|
225
|
+
// holds, and that read is the field's only ACCESSES evidence. Dropping the
|
|
226
|
+
// site here deleted it (#2782 review).
|
|
227
|
+
//
|
|
228
|
+
// Method-vs-field is not knowable at capture: `call_expression` has the same
|
|
229
|
+
// shape either way and the tail's declaration may live in another package.
|
|
230
|
+
// So the capture layer records the POSITION and edge emission — which knows
|
|
231
|
+
// the resolved target's kind — decides. See `ReferenceSite.inCalleePosition`
|
|
232
|
+
// and `tryEmitEdge`.
|
|
233
|
+
const readNode = nodeMap['@reference.read'];
|
|
234
|
+
if (readNode !== undefined && isCalleeOfMemberCall(readNode)) {
|
|
235
|
+
grouped['@reference.callee-position'] = CALLEE_POSITION_MARKER;
|
|
236
|
+
}
|
|
237
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
238
|
+
// expression, so resolution can type it by folding over structure
|
|
239
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
240
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
241
|
+
// all leave `grouped` untouched.
|
|
242
|
+
(0, receiver_chain_captures_js_1.synthesizeReceiverChainCapture)(grouped, nodeMap['@reference.receiver']);
|
|
243
|
+
out.push(grouped);
|
|
244
|
+
}
|
|
245
|
+
// Layer on type-binding synthesis (new/make/qualified composite literal)
|
|
246
|
+
const synthesized = (0, type_binding_js_1.synthesizeGoTypeBindings)(tree.rootNode);
|
|
247
|
+
out.push(...synthesized);
|
|
248
|
+
// Synthesize typeBindings for struct fields so compound receiver
|
|
249
|
+
// resolution (`user.Address.Save()`) can walk field types.
|
|
250
|
+
for (const match of out) {
|
|
251
|
+
if (match['@declaration.field'] === undefined)
|
|
252
|
+
continue;
|
|
253
|
+
const nameCap = match['@declaration.name'];
|
|
254
|
+
const typeCap = match['@declaration.field-type'];
|
|
255
|
+
if (nameCap === undefined || typeCap === undefined)
|
|
256
|
+
continue;
|
|
257
|
+
// Create a synthetic @type-binding.field match using the field
|
|
258
|
+
// name and its declared type from the @declaration.field-type capture.
|
|
259
|
+
// This lands in the Class scope's typeBindings (via pass4 positioning).
|
|
260
|
+
out.push({
|
|
261
|
+
'@type-binding.field': typeCap,
|
|
262
|
+
'@type-binding.name': nameCap,
|
|
263
|
+
'@type-binding.type': {
|
|
264
|
+
name: '@type-binding.type',
|
|
265
|
+
text: typeCap.text,
|
|
266
|
+
range: { ...typeCap.range },
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
out.push(...synthesizeGoInheritanceReferences(tree.rootNode));
|
|
271
|
+
out.push(...(0, callable_flow_captures_js_1.synthesizeCallableFlowCaptures)(tree.rootNode, GO_CALLABLE_CAPTURE_OPTIONS));
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Synthesize `@reference.inherits` captures for Go struct embedding so the
|
|
276
|
+
* registry-primary scope-resolution path emits inheritance edges (mirrors C#
|
|
277
|
+
* `synthesizeCsharpInheritanceReferences` / C++ `emitCppInheritanceCaptures`).
|
|
278
|
+
* Without this, Go embedding edges came only from the legacy heritage-capture
|
|
279
|
+
* leg (removed in #942), which is dropped for registry-primary languages in the
|
|
280
|
+
* worker pipeline (issue #1951).
|
|
281
|
+
*
|
|
282
|
+
* Scope EXACTLY matches the legacy Go heritage query + its `shouldSkipExtends`
|
|
283
|
+
* hook (`heritage-extractors/configs/go.ts`), whose supertype alternation is
|
|
284
|
+
* `[(type_identifier) (qualified_type) (generic_type)]` (see `goHeritageShapes`)
|
|
285
|
+
* matched against BOTH struct embedding and interface-in-interface embedding:
|
|
286
|
+
*
|
|
287
|
+
* struct: (struct_type (field_declaration_list
|
|
288
|
+
* (field_declaration type: <base>))) — anonymous (no `name`) field
|
|
289
|
+
* interface: (interface_type (type_elem <base>)) — single-element type_elem
|
|
290
|
+
*
|
|
291
|
+
* i.e. an embedded (anonymous) field inside a struct, or an embedded type inside
|
|
292
|
+
* an interface. Named struct fields (`Breed string`) are skipped because their
|
|
293
|
+
* `field_declaration` carries a `name` field; multi-operand interface type-sets
|
|
294
|
+
* (`int | float64`) are skipped because their `type_elem` has >1 named child —
|
|
295
|
+
* both matching the legacy `shouldSkipExtends` filter.
|
|
296
|
+
*
|
|
297
|
+
* The base shapes covered (issue #1951 — these were previously DROPPED by the
|
|
298
|
+
* registry-primary synth, so production silently omitted their edges even though
|
|
299
|
+
* the legacy heritage leg, config-driven since #1940, captured them):
|
|
300
|
+
* - bare `type_identifier` (`Base`) → the node itself
|
|
301
|
+
* - `qualified_type` (`pkg.Base`) → `name:` tail
|
|
302
|
+
* - `generic_type` (`Box[T]`) → `type:` base
|
|
303
|
+
* - pointer embeds (`*Base`, `*pkg.Base`, …) → the `*` is an
|
|
304
|
+
* unnamed token, so `field_declaration.type` already points at the inner
|
|
305
|
+
* shape above; no `pointer_type` unwrap is needed in this grammar version.
|
|
306
|
+
*
|
|
307
|
+
* The captured `@reference.name` is reduced to its bare simple identifier so the
|
|
308
|
+
* V1 simple-name `findClassBindingInScope` contract keeps holding — `pkg.Base`
|
|
309
|
+
* → `Base`, `Box[T]` → `Box`. {@link goEmbedBaseNameNode} returns the node whose
|
|
310
|
+
* `.text` EQUALS `normalizeSupertypeName(base)` for every shape (verified by
|
|
311
|
+
* real-parse), so this synth stays at parity with the legacy leg's reduction.
|
|
312
|
+
* For a bare `type_identifier` it returns the same node, keeping the simple-base
|
|
313
|
+
* path byte-identical.
|
|
314
|
+
*
|
|
315
|
+
* The EXTENDS-vs-IMPLEMENTS split is decided downstream from the resolved
|
|
316
|
+
* target's symbol kind (`preEmitInheritanceEdges`): an embedded struct resolves
|
|
317
|
+
* to EXTENDS, an embedded interface to IMPLEMENTS.
|
|
318
|
+
*/
|
|
319
|
+
function synthesizeGoInheritanceReferences(root) {
|
|
320
|
+
const out = [];
|
|
321
|
+
(0, ast_helpers_js_1.walkNamedTree)(root, (node) => {
|
|
322
|
+
if (node.type !== 'type_declaration')
|
|
323
|
+
return;
|
|
324
|
+
for (const spec of node.namedChildren) {
|
|
325
|
+
if (spec.type !== 'type_spec')
|
|
326
|
+
continue;
|
|
327
|
+
const typeNode = spec.childForFieldName('type');
|
|
328
|
+
if (typeNode === null)
|
|
329
|
+
continue;
|
|
330
|
+
if (typeNode.type === 'struct_type') {
|
|
331
|
+
const fieldList = findNamedChildOfType(typeNode, 'field_declaration_list');
|
|
332
|
+
if (fieldList === null)
|
|
333
|
+
continue;
|
|
334
|
+
for (const field of fieldList.namedChildren) {
|
|
335
|
+
if (field.type !== 'field_declaration')
|
|
336
|
+
continue;
|
|
337
|
+
// Embedded (anonymous) field: no `name` field. Named fields are
|
|
338
|
+
// skipped (legacy `shouldSkipExtends`).
|
|
339
|
+
if (field.childForFieldName('name') !== null)
|
|
340
|
+
continue;
|
|
341
|
+
// `field.type` is the embedded base — bare/qualified/generic, with any
|
|
342
|
+
// `*` pointer marker as an unnamed sibling token (already unwrapped).
|
|
343
|
+
// That token is the ONLY record of `*T` versus `T`, and the two have
|
|
344
|
+
// different method sets, so read it off the field text before it is
|
|
345
|
+
// lost. An embedded field has no name, so a leading `*` can only be
|
|
346
|
+
// the pointer marker.
|
|
347
|
+
const embeddedAsPointer = field.text.trimStart().startsWith('*');
|
|
348
|
+
emitGoEmbedInheritance(field.childForFieldName('type'), out, embeddedAsPointer);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else if (typeNode.type === 'interface_type') {
|
|
352
|
+
for (const elem of typeNode.namedChildren) {
|
|
353
|
+
// Only `type_elem` (an embedded type); `method_elem` is a method, not
|
|
354
|
+
// an embed. Multi-operand type-sets (`int | float64`) parse as a
|
|
355
|
+
// `type_elem` with >1 named child — skip them (legacy
|
|
356
|
+
// `shouldSkipExtends`); a single-element `type_elem` is the embed.
|
|
357
|
+
if (elem.type !== 'type_elem' || elem.namedChildCount !== 1)
|
|
358
|
+
continue;
|
|
359
|
+
// An interface embed is never a pointer form.
|
|
360
|
+
emitGoEmbedInheritance(elem.namedChild(0), out, false);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
return out;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Emit one `@reference.inherits` / `@reference.name` match for a Go embed base
|
|
369
|
+
* node, reducing the name to its bare simple identifier. No-ops when `baseNode`
|
|
370
|
+
* is null or not one of the embed shapes.
|
|
371
|
+
*/
|
|
372
|
+
function emitGoEmbedInheritance(baseNode, out, embeddedAsPointer) {
|
|
373
|
+
if (baseNode === null)
|
|
374
|
+
return;
|
|
375
|
+
const nameNode = goEmbedBaseNameNode(baseNode);
|
|
376
|
+
if (nameNode === null)
|
|
377
|
+
return;
|
|
378
|
+
out.push({
|
|
379
|
+
'@reference.inherits': (0, ast_helpers_js_1.nodeToCapture)('@reference.inherits', baseNode),
|
|
380
|
+
'@reference.name': (0, ast_helpers_js_1.nodeToCapture)('@reference.name', nameNode),
|
|
381
|
+
// Added ONLY for the pointer form, so a value embed's capture set is
|
|
382
|
+
// byte-identical to what it was before this marker existed.
|
|
383
|
+
...(embeddedAsPointer ? { '@reference.embedded-pointer': EMBEDDED_POINTER_MARKER } : {}),
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Reduce a Go embed base node to its trailing bare `type_identifier`, matching
|
|
388
|
+
* the node shapes the legacy heritage query accepted (`goHeritageShapes`) and
|
|
389
|
+
* the reduction `normalizeSupertypeName` performs (verified by real-parse to
|
|
390
|
+
* yield an identical `.text` for each shape):
|
|
391
|
+
* - `type_identifier` → the node itself (`Base`)
|
|
392
|
+
* - `qualified_type` name: (type_identifier) → the trailing `name:` id
|
|
393
|
+
* (`pkg.Base` → `Base`)
|
|
394
|
+
* - `generic_type` type: <any of the above> → recurse into `type:`
|
|
395
|
+
* (`Box[T]` → `Box`)
|
|
396
|
+
* Any other node type returns null (no edge), keeping this emitter at parity
|
|
397
|
+
* with the legacy leg.
|
|
398
|
+
*/
|
|
399
|
+
function goEmbedBaseNameNode(node) {
|
|
400
|
+
if (node.type === 'type_identifier')
|
|
401
|
+
return node;
|
|
402
|
+
if (node.type === 'qualified_type') {
|
|
403
|
+
const name = node.childForFieldName('name');
|
|
404
|
+
return name !== null ? goEmbedBaseNameNode(name) : null;
|
|
405
|
+
}
|
|
406
|
+
if (node.type === 'generic_type') {
|
|
407
|
+
const inner = node.childForFieldName('type');
|
|
408
|
+
return inner !== null ? goEmbedBaseNameNode(inner) : null;
|
|
409
|
+
}
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
/** First named child of `node` matching `type`, else null. */
|
|
413
|
+
function findNamedChildOfType(node, type) {
|
|
414
|
+
for (const child of node.namedChildren) {
|
|
415
|
+
if (child.type === type)
|
|
416
|
+
return child;
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Resolve the node passed to `splitGoImportStatement` for an @import.statement
|
|
422
|
+
* match. The capture is on the `import_spec`; the original preferred an
|
|
423
|
+
* `import_declaration` at the SAME range, else the import_spec. An
|
|
424
|
+
* import_declaration always includes the `import` keyword and so never shares
|
|
425
|
+
* the spec's exact range — the only candidate is an ancestor, and it can only
|
|
426
|
+
* match when ranges coincide. Walk the parent chain (bounded, local) for an
|
|
427
|
+
* import_declaration whose range equals the spec's; otherwise return the spec.
|
|
428
|
+
*/
|
|
429
|
+
function resolveImportNode(importSpec) {
|
|
430
|
+
let current = importSpec.parent;
|
|
431
|
+
while (current !== null) {
|
|
432
|
+
if (current.type === 'import_declaration') {
|
|
433
|
+
if (nodeRangeEquals(current, importSpec))
|
|
434
|
+
return current;
|
|
435
|
+
break;
|
|
436
|
+
}
|
|
437
|
+
// import_spec is nested at most under import_declaration ->
|
|
438
|
+
// import_spec_list -> import_spec; stop once we leave the import subtree.
|
|
439
|
+
if (current.type !== 'import_spec_list')
|
|
440
|
+
break;
|
|
441
|
+
current = current.parent;
|
|
442
|
+
}
|
|
443
|
+
return importSpec;
|
|
444
|
+
}
|
|
445
|
+
/** True iff two nodes occupy the exact same source range. */
|
|
446
|
+
function nodeRangeEquals(a, b) {
|
|
447
|
+
return (a.startPosition.row === b.startPosition.row &&
|
|
448
|
+
a.startPosition.column === b.startPosition.column &&
|
|
449
|
+
a.endPosition.row === b.endPosition.row &&
|
|
450
|
+
a.endPosition.column === b.endPosition.column);
|
|
451
|
+
}
|
|
452
|
+
function normalizeGenericConstructorCapture(nodeMap, grouped) {
|
|
453
|
+
const typeNode = grouped['@type-binding.constructor'] !== undefined ? nodeMap['@type-binding.type'] : undefined;
|
|
454
|
+
if (typeNode !== undefined && typeNode.type === 'generic_type') {
|
|
455
|
+
const base = typeNode.childForFieldName('type');
|
|
456
|
+
if (base !== null) {
|
|
457
|
+
grouped['@type-binding.type'] = (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', base, (0, type_binding_js_1.extractSimpleTypeNameText)(base));
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
const referenceNode = grouped['@reference.call.constructor'] !== undefined ? nodeMap['@reference.name'] : undefined;
|
|
461
|
+
if (referenceNode !== undefined && referenceNode.type === 'generic_type') {
|
|
462
|
+
const base = referenceNode.childForFieldName('type');
|
|
463
|
+
if (base !== null) {
|
|
464
|
+
grouped['@reference.name'] = (0, ast_helpers_js_1.syntheticCapture)('@reference.name', base, (0, type_binding_js_1.extractSimpleTypeNameText)(base));
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
function isRawMultiAssignTypeBinding(nodeMap) {
|
|
469
|
+
const anchor = nodeMap['@type-binding.constructor'] ??
|
|
470
|
+
nodeMap['@type-binding.call-return'] ??
|
|
471
|
+
nodeMap['@type-binding.assertion'];
|
|
472
|
+
if (anchor === undefined)
|
|
473
|
+
return false;
|
|
474
|
+
// These tags are captured directly ON the short_var_declaration, so the
|
|
475
|
+
// captured node IS what the original findNodeAtRange(root, range,
|
|
476
|
+
// 'short_var_declaration') re-derived. The var_declaration (var-form)
|
|
477
|
+
// variants — @type-binding.assertion (`var x = e.(T)`) and
|
|
478
|
+
// @type-binding.call-return (`var x = Func()`) — anchor on a var_declaration
|
|
479
|
+
// instead; the old range+type lookup found no short_var_declaration at that
|
|
480
|
+
// range and returned null -> false, which this type guard reproduces exactly.
|
|
481
|
+
if (anchor.type !== 'short_var_declaration')
|
|
482
|
+
return false;
|
|
483
|
+
const node = anchor;
|
|
484
|
+
const lhs = node.childForFieldName('left');
|
|
485
|
+
const rhs = node.childForFieldName('right');
|
|
486
|
+
if (lhs === null)
|
|
487
|
+
return false;
|
|
488
|
+
if (rhs === null)
|
|
489
|
+
return false;
|
|
490
|
+
return (lhs.namedChildren.filter((c) => c.type === 'identifier').length >= 2 &&
|
|
491
|
+
rhs.namedChildren.length >= 2);
|
|
492
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expandGoDotImports = expandGoDotImports;
|
|
4
|
+
exports.expandGoWildcardNames = expandGoWildcardNames;
|
|
5
|
+
/**
|
|
6
|
+
* Expand Go dot imports (`import . "pkg"`) into binding augmentations.
|
|
7
|
+
*
|
|
8
|
+
* Go dot imports are treated as wildcard imports in the scope model.
|
|
9
|
+
* The shared `expandsWildcardTo` hook defaults to returning `[]` for Go
|
|
10
|
+
* because it can't easily access the target module's exported defs
|
|
11
|
+
* (it only receives a `ScopeId`). Instead we post-process wildcard
|
|
12
|
+
* import edges and augment bindings with the target file's exported
|
|
13
|
+
* (uppercase) defs — the same augmentation channel used by
|
|
14
|
+
* `populateGoPackageSiblings` for same-package cross-file visibility.
|
|
15
|
+
*/
|
|
16
|
+
function expandGoDotImports(parsedFiles, indexes) {
|
|
17
|
+
const augmentations = indexes.bindingAugmentations;
|
|
18
|
+
for (const parsed of parsedFiles) {
|
|
19
|
+
const moduleEdges = indexes.imports.get(parsed.moduleScope);
|
|
20
|
+
if (moduleEdges === undefined)
|
|
21
|
+
continue;
|
|
22
|
+
const wildcardTargets = [];
|
|
23
|
+
for (const edge of moduleEdges) {
|
|
24
|
+
// Go dot imports start as `kind: 'wildcard'`; finalize materializes
|
|
25
|
+
// them as `wildcard-expanded` import edges.
|
|
26
|
+
if (edge.kind !== 'wildcard-expanded' && edge.kind !== 'dynamic-resolved') {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (edge.targetFile === null)
|
|
30
|
+
continue;
|
|
31
|
+
if (!wildcardTargets.includes(edge.targetFile))
|
|
32
|
+
wildcardTargets.push(edge.targetFile);
|
|
33
|
+
}
|
|
34
|
+
if (wildcardTargets.length === 0)
|
|
35
|
+
continue;
|
|
36
|
+
for (const targetFile of wildcardTargets) {
|
|
37
|
+
const targetModule = indexes.moduleScopes.byFilePath.get(targetFile);
|
|
38
|
+
if (targetModule === undefined)
|
|
39
|
+
continue;
|
|
40
|
+
// Walk target module's local bindings — these are the exported symbols.
|
|
41
|
+
const targetBindings = indexes.bindings.get(targetModule);
|
|
42
|
+
if (targetBindings === undefined)
|
|
43
|
+
continue;
|
|
44
|
+
for (const [name, refs] of targetBindings) {
|
|
45
|
+
if (name.length === 0)
|
|
46
|
+
continue;
|
|
47
|
+
// V1: ASCII-only export check; Unicode uppercase identifiers (e.g. Ñame)
|
|
48
|
+
// are not recognized as exported. Conforms to Go community convention.
|
|
49
|
+
const first = name[0];
|
|
50
|
+
if (first < 'A' || first > 'Z')
|
|
51
|
+
continue;
|
|
52
|
+
// Check if the importer already has this name.
|
|
53
|
+
const importerBindings = indexes.bindings.get(parsed.moduleScope);
|
|
54
|
+
if (importerBindings?.has(name))
|
|
55
|
+
continue;
|
|
56
|
+
let augBucket = augmentations.get(parsed.moduleScope);
|
|
57
|
+
if (augBucket === undefined) {
|
|
58
|
+
augBucket = new Map();
|
|
59
|
+
augmentations.set(parsed.moduleScope, augBucket);
|
|
60
|
+
}
|
|
61
|
+
let entries = augBucket.get(name);
|
|
62
|
+
if (entries === undefined) {
|
|
63
|
+
entries = [];
|
|
64
|
+
augBucket.set(name, entries);
|
|
65
|
+
}
|
|
66
|
+
for (const ref of refs) {
|
|
67
|
+
if (ref.origin !== 'local')
|
|
68
|
+
continue;
|
|
69
|
+
if (entries.some((e) => e.def.nodeId === ref.def.nodeId))
|
|
70
|
+
continue;
|
|
71
|
+
entries.push({ def: ref.def, origin: 'wildcard' });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function expandGoWildcardNames(targetModuleScope, parsedFiles) {
|
|
78
|
+
const target = parsedFiles.find((parsed) => parsed.moduleScope === targetModuleScope);
|
|
79
|
+
if (target === undefined)
|
|
80
|
+
return [];
|
|
81
|
+
const names = [];
|
|
82
|
+
for (const def of target.localDefs) {
|
|
83
|
+
const name = simpleName(def);
|
|
84
|
+
if (name === '')
|
|
85
|
+
continue;
|
|
86
|
+
// V1: ASCII-only export check; see expandGoDotImports for full note.
|
|
87
|
+
const first = name[0];
|
|
88
|
+
if (first < 'A' || first > 'Z')
|
|
89
|
+
continue;
|
|
90
|
+
if (!names.includes(name))
|
|
91
|
+
names.push(name);
|
|
92
|
+
}
|
|
93
|
+
return names;
|
|
94
|
+
}
|
|
95
|
+
function simpleName(def) {
|
|
96
|
+
return def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
97
|
+
}
|