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,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tree-sitter query for Python scope captures (RFC §5.1).
|
|
4
|
+
*
|
|
5
|
+
* Exposes lazy `Parser` and `Query` singletons so callers don't
|
|
6
|
+
* pay tree-sitter init cost per file.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getPythonParser = getPythonParser;
|
|
13
|
+
exports.getPythonScopeQuery = getPythonScopeQuery;
|
|
14
|
+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
15
|
+
const node_module_1 = require("node:module");
|
|
16
|
+
// 懒加载(spec §7/§13):tree-sitter-python 移至 devDependencies,生产 --omit=dev 不装。
|
|
17
|
+
// 首次用到时按需 require + 缓存;失败 → null,该语言降级为结构层收录,不阻断 analyze。
|
|
18
|
+
const _require = (0, node_module_1.createRequire)(__filename);
|
|
19
|
+
let _pythonGrammar;
|
|
20
|
+
const loadPythonGrammar = () => {
|
|
21
|
+
if (_pythonGrammar !== undefined)
|
|
22
|
+
return _pythonGrammar;
|
|
23
|
+
try {
|
|
24
|
+
_pythonGrammar = _require('tree-sitter-python');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
_pythonGrammar = null;
|
|
28
|
+
}
|
|
29
|
+
return _pythonGrammar;
|
|
30
|
+
};
|
|
31
|
+
const PYTHON_SCOPE_QUERY = `
|
|
32
|
+
;; Scopes
|
|
33
|
+
(module) @scope.module
|
|
34
|
+
(class_definition) @scope.class
|
|
35
|
+
(function_definition) @scope.function
|
|
36
|
+
(lambda) @scope.function
|
|
37
|
+
|
|
38
|
+
;; Declarations
|
|
39
|
+
(class_definition
|
|
40
|
+
name: (identifier) @declaration.name) @declaration.class
|
|
41
|
+
|
|
42
|
+
(function_definition
|
|
43
|
+
name: (identifier) @declaration.name) @declaration.function
|
|
44
|
+
|
|
45
|
+
;; Lambda bindings (\`f = lambda x: x\`). The \`@declaration.function\` anchor
|
|
46
|
+
;; sits on the INNER lambda so its range aligns with \`(lambda) @scope.function\`
|
|
47
|
+
;; above; otherwise the def is owned by the module scope and calls inside the
|
|
48
|
+
;; lambda lose caller attribution. Mirrors the TypeScript arrow patterns (#2687).
|
|
49
|
+
(expression_statement
|
|
50
|
+
(assignment
|
|
51
|
+
left: (identifier) @declaration.name
|
|
52
|
+
right: (lambda) @declaration.function))
|
|
53
|
+
|
|
54
|
+
(assignment
|
|
55
|
+
left: (identifier) @declaration.name) @declaration.variable
|
|
56
|
+
|
|
57
|
+
;; Declarations: for-loop target — Python for-statements do NOT introduce
|
|
58
|
+
;; a new scope, so the loop variable binds in the enclosing function/module
|
|
59
|
+
;; scope. We emit it as a Variable declaration so Pass-2 attaches it.
|
|
60
|
+
(for_statement
|
|
61
|
+
left: (identifier) @declaration.name) @declaration.variable
|
|
62
|
+
|
|
63
|
+
;; Imports — single anchor per statement; interpretImport decomposes
|
|
64
|
+
(import_statement) @import.statement
|
|
65
|
+
(import_from_statement) @import.statement
|
|
66
|
+
|
|
67
|
+
;; Type bindings (parameter annotations)
|
|
68
|
+
(typed_parameter
|
|
69
|
+
(identifier) @type-binding.name
|
|
70
|
+
type: (type) @type-binding.type) @type-binding.parameter
|
|
71
|
+
|
|
72
|
+
(typed_default_parameter
|
|
73
|
+
name: (identifier) @type-binding.name
|
|
74
|
+
type: (type) @type-binding.type) @type-binding.parameter
|
|
75
|
+
|
|
76
|
+
;; Type bindings (constructor-inferred: \`u = User(...)\`)
|
|
77
|
+
;; Listed BEFORE the annotation pattern so \`u: User = find()\` — which
|
|
78
|
+
;; matches BOTH patterns — has the annotation (stronger source) win over
|
|
79
|
+
;; the constructor-inferred guess via the scope-extractor's source-
|
|
80
|
+
;; strength tie-break in pass4CollectTypeBindings.
|
|
81
|
+
(assignment
|
|
82
|
+
left: (identifier) @type-binding.name
|
|
83
|
+
right: (call
|
|
84
|
+
function: (identifier) @type-binding.type)) @type-binding.constructor
|
|
85
|
+
|
|
86
|
+
;; Qualified constructor (\`u = models.User(...)\`). Captures the
|
|
87
|
+
;; attribute node as the type — its \`.text\` is the full dotted path
|
|
88
|
+
;; (\`models.User\`), which \`resolveTypeRef\` resolves via
|
|
89
|
+
;; \`QualifiedNameIndex\` Phase 2.
|
|
90
|
+
(assignment
|
|
91
|
+
left: (identifier) @type-binding.name
|
|
92
|
+
right: (call
|
|
93
|
+
function: (attribute) @type-binding.type)) @type-binding.constructor
|
|
94
|
+
|
|
95
|
+
;; Walrus operator: \`(u := User(...))\`. Python 3.8+ named expression.
|
|
96
|
+
;; Shares the constructor-inferred shape so the binding lands in the
|
|
97
|
+
;; enclosing function/module scope's typeBindings the same way a plain
|
|
98
|
+
;; assignment would.
|
|
99
|
+
(named_expression
|
|
100
|
+
name: (identifier) @type-binding.name
|
|
101
|
+
value: (call
|
|
102
|
+
function: (identifier) @type-binding.type)) @type-binding.constructor
|
|
103
|
+
|
|
104
|
+
(named_expression
|
|
105
|
+
name: (identifier) @type-binding.name
|
|
106
|
+
value: (call
|
|
107
|
+
function: (attribute) @type-binding.type)) @type-binding.constructor
|
|
108
|
+
|
|
109
|
+
;; Match-case as-pattern: \`case User() as u:\` → \`u: User\`. The
|
|
110
|
+
;; class_pattern's dotted_name carries the type; the outer as_pattern's
|
|
111
|
+
;; second child is the binding name.
|
|
112
|
+
(as_pattern
|
|
113
|
+
(case_pattern
|
|
114
|
+
(class_pattern
|
|
115
|
+
(dotted_name) @type-binding.type))
|
|
116
|
+
(identifier) @type-binding.name) @type-binding.constructor
|
|
117
|
+
|
|
118
|
+
;; Assignment chain: \`alias = user\` — the new name inherits the
|
|
119
|
+
;; RHS-identifier's type. The pattern emits a TypeRef whose rawName is
|
|
120
|
+
;; the RHS identifier's text; the scope-extractor's post-pass follows
|
|
121
|
+
;; the chain so \`alias\` ends up pointing at whatever type \`user\` has.
|
|
122
|
+
(assignment
|
|
123
|
+
left: (identifier) @type-binding.name
|
|
124
|
+
right: (identifier) @type-binding.type) @type-binding.alias
|
|
125
|
+
|
|
126
|
+
;; For-loop iterable of an already-typed variable:
|
|
127
|
+
;; def f(users: list[User]):
|
|
128
|
+
;; for u in users: # u: users (chained via post-pass)
|
|
129
|
+
;; u.save()
|
|
130
|
+
;; The chain post-pass resolves \`users\` → its own type \`User\` via
|
|
131
|
+
;; the generic-arg stripping in \`interpret.ts\`.
|
|
132
|
+
(for_statement
|
|
133
|
+
left: (identifier) @type-binding.name
|
|
134
|
+
right: (identifier) @type-binding.type) @type-binding.alias
|
|
135
|
+
|
|
136
|
+
;; For-loop iterable of a free-call result:
|
|
137
|
+
;; def get_users() -> list[User]: ...
|
|
138
|
+
;; for u in get_users(): # u: get_users → User via chain follow
|
|
139
|
+
;; u.save()
|
|
140
|
+
;; Captures the call's function identifier as the rawName. With
|
|
141
|
+
;; \`propagateImportedReturnTypes\`, this works cross-file too.
|
|
142
|
+
(for_statement
|
|
143
|
+
left: (identifier) @type-binding.name
|
|
144
|
+
right: (call
|
|
145
|
+
function: (identifier) @type-binding.type)) @type-binding.alias
|
|
146
|
+
|
|
147
|
+
;; for (i, u) in enumerate(X) — paren-tuple, bind last element to X's
|
|
148
|
+
;; element type. \`enumerate(X)\` yields (int, X-element); the second
|
|
149
|
+
;; pattern var takes X (which the chain-follow then unwraps to its
|
|
150
|
+
;; element type via generic-strip in interpret.ts).
|
|
151
|
+
(for_statement
|
|
152
|
+
left: (tuple_pattern
|
|
153
|
+
(identifier)
|
|
154
|
+
(identifier) @type-binding.name)
|
|
155
|
+
right: (call
|
|
156
|
+
function: (identifier) @_enum
|
|
157
|
+
arguments: (argument_list
|
|
158
|
+
(identifier) @type-binding.type))
|
|
159
|
+
(#eq? @_enum "enumerate")) @type-binding.alias
|
|
160
|
+
|
|
161
|
+
;; for i, u in enumerate(X) — pattern_list (no parens) variant.
|
|
162
|
+
(for_statement
|
|
163
|
+
left: (pattern_list
|
|
164
|
+
(identifier)
|
|
165
|
+
(identifier) @type-binding.name)
|
|
166
|
+
right: (call
|
|
167
|
+
function: (identifier) @_enum
|
|
168
|
+
arguments: (argument_list
|
|
169
|
+
(identifier) @type-binding.type))
|
|
170
|
+
(#eq? @_enum "enumerate")) @type-binding.alias
|
|
171
|
+
|
|
172
|
+
;; for k, v in d.items() — bind v to d. The chain-follow unwraps d's
|
|
173
|
+
;; dict[K, V] annotation to V via the dict-aware stripGeneric in
|
|
174
|
+
;; interpret.ts. Covers both pattern_list and tuple_pattern shapes.
|
|
175
|
+
(for_statement
|
|
176
|
+
left: (pattern_list
|
|
177
|
+
(identifier)
|
|
178
|
+
(identifier) @type-binding.name)
|
|
179
|
+
right: (call
|
|
180
|
+
function: (attribute
|
|
181
|
+
object: (identifier) @type-binding.type
|
|
182
|
+
attribute: (identifier) @_items))
|
|
183
|
+
(#eq? @_items "items")) @type-binding.alias
|
|
184
|
+
|
|
185
|
+
(for_statement
|
|
186
|
+
left: (tuple_pattern
|
|
187
|
+
(identifier)
|
|
188
|
+
(identifier) @type-binding.name)
|
|
189
|
+
right: (call
|
|
190
|
+
function: (attribute
|
|
191
|
+
object: (identifier) @type-binding.type
|
|
192
|
+
attribute: (identifier) @_items))
|
|
193
|
+
(#eq? @_items "items")) @type-binding.alias
|
|
194
|
+
|
|
195
|
+
;; for i, (k, v) in enumerate(d.items()) — nested tuple destructuring.
|
|
196
|
+
;; Bind v (last id of the nested tuple) to d (the dict).
|
|
197
|
+
(for_statement
|
|
198
|
+
left: (pattern_list
|
|
199
|
+
(identifier)
|
|
200
|
+
(tuple_pattern
|
|
201
|
+
(identifier)
|
|
202
|
+
(identifier) @type-binding.name))
|
|
203
|
+
right: (call
|
|
204
|
+
function: (identifier) @_enum
|
|
205
|
+
arguments: (argument_list
|
|
206
|
+
(call
|
|
207
|
+
function: (attribute
|
|
208
|
+
object: (identifier) @type-binding.type
|
|
209
|
+
attribute: (identifier) @_items))))
|
|
210
|
+
(#eq? @_enum "enumerate")
|
|
211
|
+
(#eq? @_items "items")) @type-binding.alias
|
|
212
|
+
|
|
213
|
+
;; for i, k, v in enumerate(d.items()) — 3-var flat destructuring of
|
|
214
|
+
;; the (i, (k,v)) tuple emitted by enumerate over items(). Bind v
|
|
215
|
+
;; (last id) to d.
|
|
216
|
+
(for_statement
|
|
217
|
+
left: (pattern_list
|
|
218
|
+
(identifier)
|
|
219
|
+
(identifier)
|
|
220
|
+
(identifier) @type-binding.name)
|
|
221
|
+
right: (call
|
|
222
|
+
function: (identifier) @_enum
|
|
223
|
+
arguments: (argument_list
|
|
224
|
+
(call
|
|
225
|
+
function: (attribute
|
|
226
|
+
object: (identifier) @type-binding.type
|
|
227
|
+
attribute: (identifier) @_items))))
|
|
228
|
+
(#eq? @_enum "enumerate")
|
|
229
|
+
(#eq? @_items "items")) @type-binding.alias
|
|
230
|
+
|
|
231
|
+
;; for u in self.X — heuristic: bind u to X (the attribute name).
|
|
232
|
+
;; The chain-follow then resolves X via the enclosing method's
|
|
233
|
+
;; parameter typeBinding, supporting fixtures that reference
|
|
234
|
+
;; \`self.X\` as a stand-in for a parameter X (matches legacy DAG
|
|
235
|
+
;; behavior).
|
|
236
|
+
(for_statement
|
|
237
|
+
left: (identifier) @type-binding.name
|
|
238
|
+
right: (attribute
|
|
239
|
+
object: (identifier) @_self
|
|
240
|
+
attribute: (identifier) @type-binding.type)
|
|
241
|
+
(#eq? @_self "self")) @type-binding.alias
|
|
242
|
+
|
|
243
|
+
;; for v in d.values() — bind v to d (dict-strip yields value type).
|
|
244
|
+
(for_statement
|
|
245
|
+
left: (identifier) @type-binding.name
|
|
246
|
+
right: (call
|
|
247
|
+
function: (attribute
|
|
248
|
+
object: (identifier) @type-binding.type
|
|
249
|
+
attribute: (identifier) @_values))
|
|
250
|
+
(#eq? @_values "values")) @type-binding.alias
|
|
251
|
+
|
|
252
|
+
;; Type bindings (variable annotations: \`u: User\` / \`u: User = x\`)
|
|
253
|
+
(assignment
|
|
254
|
+
left: (identifier) @type-binding.name
|
|
255
|
+
type: (type) @type-binding.type) @type-binding.annotation
|
|
256
|
+
|
|
257
|
+
;; Return-type annotation: \`def get_user() -> User:\` binds the
|
|
258
|
+
;; FUNCTION'S NAME to its return type in the enclosing scope. Combined
|
|
259
|
+
;; with the constructor-inferred + chain-follow path, \`u = get_user()\`
|
|
260
|
+
;; then resolves \`u: User\` cross-call. The Python provider hoists the
|
|
261
|
+
;; binding via \`pythonBindingScopeFor\` to the function's parent scope
|
|
262
|
+
;; so callers in module/class scope see it.
|
|
263
|
+
(function_definition
|
|
264
|
+
name: (identifier) @type-binding.name
|
|
265
|
+
return_type: (type) @type-binding.type) @type-binding.return
|
|
266
|
+
|
|
267
|
+
;; Decorators — simple @decorator
|
|
268
|
+
(decorator
|
|
269
|
+
(identifier) @reference.name) @reference.call.free
|
|
270
|
+
|
|
271
|
+
;; Decorators — @obj.decorator (single attribute, identifier receiver)
|
|
272
|
+
(decorator
|
|
273
|
+
(attribute
|
|
274
|
+
object: (identifier) @reference.receiver
|
|
275
|
+
attribute: (identifier) @reference.name)) @reference.call.member
|
|
276
|
+
|
|
277
|
+
;; Decorators — @a.b.decorator (nested attributes)
|
|
278
|
+
(decorator
|
|
279
|
+
(attribute
|
|
280
|
+
object: (attribute) @reference.receiver
|
|
281
|
+
attribute: (identifier) @reference.name)) @reference.call.member
|
|
282
|
+
|
|
283
|
+
;; References — calls
|
|
284
|
+
(call
|
|
285
|
+
function: (identifier) @reference.name) @reference.call.free
|
|
286
|
+
|
|
287
|
+
(call
|
|
288
|
+
function: (attribute
|
|
289
|
+
object: (_) @reference.receiver
|
|
290
|
+
attribute: (identifier) @reference.name)) @reference.call.member
|
|
291
|
+
|
|
292
|
+
;; References — attribute writes: \`obj.name = "x"\` emits a write
|
|
293
|
+
;; ACCESSES edge from the enclosing function to the field on obj's
|
|
294
|
+
;; class. The receiver-bound emit pass resolves obj → its class and
|
|
295
|
+
;; \`name\` → the field def via the existing typeref-receiver path.
|
|
296
|
+
(assignment
|
|
297
|
+
left: (attribute
|
|
298
|
+
object: (_) @reference.receiver
|
|
299
|
+
attribute: (identifier) @reference.name)) @reference.write.member
|
|
300
|
+
`;
|
|
301
|
+
let _parser = null;
|
|
302
|
+
let _query = null;
|
|
303
|
+
function getPythonParser() {
|
|
304
|
+
if (_parser === null) {
|
|
305
|
+
const grammar = loadPythonGrammar();
|
|
306
|
+
if (grammar === null) {
|
|
307
|
+
throw new Error('tree-sitter-python grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
|
|
308
|
+
}
|
|
309
|
+
_parser = new tree_sitter_1.default();
|
|
310
|
+
_parser.setLanguage(grammar);
|
|
311
|
+
}
|
|
312
|
+
return _parser;
|
|
313
|
+
}
|
|
314
|
+
function getPythonScopeQuery() {
|
|
315
|
+
if (_query === null) {
|
|
316
|
+
const grammar = loadPythonGrammar();
|
|
317
|
+
if (grammar === null) {
|
|
318
|
+
throw new Error('tree-sitter-python grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
|
|
319
|
+
}
|
|
320
|
+
_query = new tree_sitter_1.default.Query(grammar, PYTHON_SCOPE_QUERY);
|
|
321
|
+
}
|
|
322
|
+
return _query;
|
|
323
|
+
}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Synthesize implicit receiver and constructor-assigned field type bindings
|
|
4
|
+
* for methods.
|
|
5
|
+
*
|
|
6
|
+
* Tree-sitter can't easily express "the first parameter of a function
|
|
7
|
+
* defined directly inside a class body" via a single static query.
|
|
8
|
+
* Doing this in code keeps the embedded scope query declarative and
|
|
9
|
+
* lets us encode the `@classmethod` / `@staticmethod` decorator
|
|
10
|
+
* awareness that Python's runtime depends on.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.synthesizeReceiverTypeBinding = synthesizeReceiverTypeBinding;
|
|
14
|
+
exports.synthesizeConstructorFieldTypeBindings = synthesizeConstructorFieldTypeBindings;
|
|
15
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
16
|
+
/** Walk up to the enclosing `class_definition`, ignoring the immediate
|
|
17
|
+
* `decorated_definition` wrapper. Returns `null` when the function is
|
|
18
|
+
* free, lambda-bodied, or nested inside another function. */
|
|
19
|
+
function findEnclosingClassDefinition(node) {
|
|
20
|
+
let cur = node.parent;
|
|
21
|
+
while (cur !== null) {
|
|
22
|
+
if (cur.type === 'class_definition')
|
|
23
|
+
return cur;
|
|
24
|
+
if (cur.type === 'function_definition')
|
|
25
|
+
return null;
|
|
26
|
+
cur = cur.parent;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
function classDefinitionName(classNode) {
|
|
31
|
+
return classNode.childForFieldName('name')?.text ?? null;
|
|
32
|
+
}
|
|
33
|
+
/** Does the function carry a `@<decoratorName>` decorator? Matches both
|
|
34
|
+
* bare `@classmethod` and module-qualified `@functools.classmethod`. */
|
|
35
|
+
function hasDecorator(fnNode, decoratorName) {
|
|
36
|
+
const parent = fnNode.parent;
|
|
37
|
+
if (parent === null || parent.type !== 'decorated_definition')
|
|
38
|
+
return false;
|
|
39
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
40
|
+
const child = parent.namedChild(i);
|
|
41
|
+
if (child === null || child.type !== 'decorator')
|
|
42
|
+
continue;
|
|
43
|
+
const text = child.text.replace(/^@/, '').split('(')[0].trim();
|
|
44
|
+
const tail = text.split('.').pop();
|
|
45
|
+
if (tail === decoratorName)
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
function firstNamedParameter(parameters) {
|
|
51
|
+
for (let i = 0; i < parameters.namedChildCount; i++) {
|
|
52
|
+
const child = parameters.namedChild(i);
|
|
53
|
+
if (child === null)
|
|
54
|
+
continue;
|
|
55
|
+
// Skip `*` / `/` markers.
|
|
56
|
+
if (child.type === 'positional_separator' || child.type === 'keyword_separator')
|
|
57
|
+
continue;
|
|
58
|
+
return child;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
function firstParameterName(param) {
|
|
63
|
+
if (param.type === 'identifier')
|
|
64
|
+
return param.text;
|
|
65
|
+
// typed_parameter / default_parameter / typed_default_parameter:
|
|
66
|
+
// first child holds the identifier / pattern.
|
|
67
|
+
const ident = param.childForFieldName('name') ?? findIdentifierChild(param);
|
|
68
|
+
return ident?.text ?? null;
|
|
69
|
+
}
|
|
70
|
+
function findIdentifierChild(node) {
|
|
71
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
72
|
+
const child = node.namedChild(i);
|
|
73
|
+
if (child !== null && child.type === 'identifier')
|
|
74
|
+
return child;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Build a `@type-binding.self` (instance method) or `@type-binding.cls`
|
|
80
|
+
* (`@classmethod`) match for `fnNode`, or `null` if `fnNode` is not a
|
|
81
|
+
* method, is `@staticmethod`, or has no parameters.
|
|
82
|
+
*
|
|
83
|
+
* The caller is responsible for guaranteeing `fnNode.type ===
|
|
84
|
+
* 'function_definition'`.
|
|
85
|
+
*/
|
|
86
|
+
function synthesizeReceiverTypeBinding(fnNode) {
|
|
87
|
+
const enclosingClass = findEnclosingClassDefinition(fnNode);
|
|
88
|
+
if (enclosingClass === null)
|
|
89
|
+
return null;
|
|
90
|
+
// Skip @staticmethod-decorated methods (no implicit receiver).
|
|
91
|
+
if (hasDecorator(fnNode, 'staticmethod'))
|
|
92
|
+
return null;
|
|
93
|
+
const isClassmethod = hasDecorator(fnNode, 'classmethod');
|
|
94
|
+
const params = fnNode.childForFieldName('parameters');
|
|
95
|
+
if (params === null)
|
|
96
|
+
return null;
|
|
97
|
+
const first = firstNamedParameter(params);
|
|
98
|
+
if (first === null)
|
|
99
|
+
return null;
|
|
100
|
+
const className = classDefinitionName(enclosingClass);
|
|
101
|
+
if (className === null)
|
|
102
|
+
return null;
|
|
103
|
+
const firstName = firstParameterName(first);
|
|
104
|
+
if (firstName === null)
|
|
105
|
+
return null;
|
|
106
|
+
// Receiver convention: instance methods get `self`, classmethods get `cls`.
|
|
107
|
+
// We trust the AST literal name (Python convention is strict in practice).
|
|
108
|
+
if (isClassmethod) {
|
|
109
|
+
return {
|
|
110
|
+
'@type-binding.cls': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.cls', first),
|
|
111
|
+
'@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', first, firstName),
|
|
112
|
+
'@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', first, className),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
'@type-binding.self': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.self', first),
|
|
117
|
+
'@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', first, firstName),
|
|
118
|
+
'@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', first, className),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The class name of a direct constructor call — `Outer()` — or `undefined` for
|
|
123
|
+
* anything else. Python has no `new`, so a call is the only syntactic
|
|
124
|
+
* construction form, and a call to a plain name is the shape every other
|
|
125
|
+
* language spells `= new X()`.
|
|
126
|
+
*
|
|
127
|
+
* BARE NAMES ONLY. A dotted callee (`models.User()`, `f.Alpha()`) is refused.
|
|
128
|
+
* The first cut of #2807 returned the callee's full dotted text, on the theory
|
|
129
|
+
* that a dotted name resolves through `QualifiedNameIndex` the way the
|
|
130
|
+
* module-level `u = models.User()` capture in `query.ts` does. Measured on a
|
|
131
|
+
* fixture carrying both shapes, that arm produced no correct edge and did
|
|
132
|
+
* produce wrong ones:
|
|
133
|
+
*
|
|
134
|
+
* - `self.svc = f.Alpha()`, where `Alpha` is a METHOD on an unrelated object
|
|
135
|
+
* and `Alpha` is also a class elsewhere: the dotted lookup matches the
|
|
136
|
+
* TRAILING segment against a same-named class, so `self.svc.ping()` emitted
|
|
137
|
+
* a FABRICATED edge to `Alpha.ping`. The root does not have to be a
|
|
138
|
+
* parameter — a module-level `shared_factory.Alpha()` fabricates the same
|
|
139
|
+
* way — so no test on the root's binding form contains this.
|
|
140
|
+
* - `self.u = models.User()`, the shape the arm was written FOR, emitted no
|
|
141
|
+
* edge with the arm or without it. An instance field's binding lands in
|
|
142
|
+
* CLASS scope, which never reaches the namespace split that makes the
|
|
143
|
+
* module-level local form resolve.
|
|
144
|
+
*
|
|
145
|
+
* Accepted cost, stated plainly: `self.u = models.User()` still does not type
|
|
146
|
+
* its field. It did not before this narrowing either, so nothing that worked is
|
|
147
|
+
* given up — and declining to bind is the doctrine `compound-receiver.ts`
|
|
148
|
+
* states, that a confidently WRONG owner is strictly worse than a missing edge.
|
|
149
|
+
* Re-enabling dotted callees is a RESOLUTION-side change (teach the field path
|
|
150
|
+
* the namespace split that #2826/#2828 is reworking); redoing it here could
|
|
151
|
+
* only re-open the trailing-segment fabrication.
|
|
152
|
+
*
|
|
153
|
+
* This is also why the tier tie-break below can stay last-write-wins: the
|
|
154
|
+
* displacement it used to suffer — `self.conn = Outer()` then
|
|
155
|
+
* `self.conn = Registry.get()`, where the second, dotted, non-type candidate
|
|
156
|
+
* overwrote the real constructor binding at the shared weakest tier and left
|
|
157
|
+
* the field untyped — cannot arise once a dotted callee yields no candidate at
|
|
158
|
+
* all. The weakest tier now ranks only REAL constructions against each other,
|
|
159
|
+
* where the last write in `__init__` genuinely is the live one.
|
|
160
|
+
*/
|
|
161
|
+
function constructorCallTypeName(right, receiverName) {
|
|
162
|
+
if (right === null || right.type !== 'call')
|
|
163
|
+
return undefined;
|
|
164
|
+
const callee = right.childForFieldName('function');
|
|
165
|
+
if (callee === null)
|
|
166
|
+
return undefined;
|
|
167
|
+
// An `attribute` callee is the dotted path refused above; `self.p =
|
|
168
|
+
// self.build()` is one instance of it, and a method call is not a
|
|
169
|
+
// construction.
|
|
170
|
+
if (callee.type !== 'identifier')
|
|
171
|
+
return undefined;
|
|
172
|
+
const text = callee.text.trim();
|
|
173
|
+
if (text.length === 0)
|
|
174
|
+
return undefined;
|
|
175
|
+
// `self.p = self()` invokes the instance's own `__call__`. It is a call to a
|
|
176
|
+
// bare name, but that name is the receiver, not a type.
|
|
177
|
+
if (text === receiverName)
|
|
178
|
+
return undefined;
|
|
179
|
+
return text;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Synthesize class-scope field bindings for the common Python constructor
|
|
183
|
+
* injection patterns:
|
|
184
|
+
*
|
|
185
|
+
* def __init__(self, service: Service):
|
|
186
|
+
* self.service = service # from the PARAMETER's annotation
|
|
187
|
+
* self.cache: Cache = build() # from the FIELD's own annotation
|
|
188
|
+
* self.outer = Outer() # from the CONSTRUCTOR called (#2807)
|
|
189
|
+
*
|
|
190
|
+
* The three tiers rank in that order — an explicit field annotation beats a
|
|
191
|
+
* parameter annotation, which beats a construction. Anything else is still
|
|
192
|
+
* refused: the receiver resolver needs positive evidence, not a name-only
|
|
193
|
+
* guess from an arbitrary RHS.
|
|
194
|
+
*/
|
|
195
|
+
function synthesizeConstructorFieldTypeBindings(fnNode) {
|
|
196
|
+
if (fnNode.childForFieldName('name')?.text !== '__init__')
|
|
197
|
+
return [];
|
|
198
|
+
if (findEnclosingClassDefinition(fnNode) === null)
|
|
199
|
+
return [];
|
|
200
|
+
if (hasDecorator(fnNode, 'staticmethod') || hasDecorator(fnNode, 'classmethod'))
|
|
201
|
+
return [];
|
|
202
|
+
const receiver = synthesizeReceiverTypeBinding(fnNode);
|
|
203
|
+
const receiverName = receiver?.['@type-binding.self']?.text;
|
|
204
|
+
if (receiverName === undefined)
|
|
205
|
+
return [];
|
|
206
|
+
const parameters = fnNode.childForFieldName('parameters');
|
|
207
|
+
const body = fnNode.childForFieldName('body');
|
|
208
|
+
if (parameters === null || body === null)
|
|
209
|
+
return [];
|
|
210
|
+
const parameterTypes = new Map();
|
|
211
|
+
for (let i = 0; i < parameters.namedChildCount; i++) {
|
|
212
|
+
const parameter = parameters.namedChild(i);
|
|
213
|
+
if (parameter === null)
|
|
214
|
+
continue;
|
|
215
|
+
const name = firstParameterName(parameter);
|
|
216
|
+
const annotation = parameter.childForFieldName('type');
|
|
217
|
+
if (name !== null && annotation !== null)
|
|
218
|
+
parameterTypes.set(name, annotation.text);
|
|
219
|
+
}
|
|
220
|
+
// Three evidence tiers for one field, strongest first. A later assignment of
|
|
221
|
+
// the SAME tier still wins (last write in `__init__` is the live one), but a
|
|
222
|
+
// weaker one never displaces a stronger: `self.x: Outer = make()` keeps its
|
|
223
|
+
// annotation even if a later branch does `self.x = Other()`.
|
|
224
|
+
//
|
|
225
|
+
// Same-tier last-write-wins is only sound because `constructorCallTypeName`
|
|
226
|
+
// admits nothing but real constructions into the weakest tier — see the note
|
|
227
|
+
// there on the `self.conn = Registry.get()` displacement it used to allow.
|
|
228
|
+
const TIER_EXPLICIT = 2;
|
|
229
|
+
const TIER_PARAMETER = 1;
|
|
230
|
+
const TIER_CONSTRUCTOR = 0;
|
|
231
|
+
const candidates = new Map();
|
|
232
|
+
const stack = [body];
|
|
233
|
+
while (stack.length > 0) {
|
|
234
|
+
const node = stack.pop();
|
|
235
|
+
if (node !== body &&
|
|
236
|
+
(node.type === 'function_definition' ||
|
|
237
|
+
node.type === 'lambda' ||
|
|
238
|
+
node.type === 'class_definition' ||
|
|
239
|
+
node.type === 'if_statement' ||
|
|
240
|
+
node.type === 'for_statement' ||
|
|
241
|
+
node.type === 'while_statement' ||
|
|
242
|
+
node.type === 'try_statement' ||
|
|
243
|
+
node.type === 'match_statement')) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (node.type === 'assignment') {
|
|
247
|
+
const left = node.childForFieldName('left');
|
|
248
|
+
const right = node.childForFieldName('right');
|
|
249
|
+
if (left?.type === 'attribute') {
|
|
250
|
+
const object = left.childForFieldName('object');
|
|
251
|
+
const field = left.childForFieldName('attribute');
|
|
252
|
+
if (object?.type === 'identifier' && object.text === receiverName && field !== null) {
|
|
253
|
+
const explicitType = node.childForFieldName('type');
|
|
254
|
+
const parameterType = right?.type === 'identifier' ? parameterTypes.get(right.text) : undefined;
|
|
255
|
+
// `self.x = Outer()` — the type comes from the CONSTRUCTOR being
|
|
256
|
+
// called (#2807). This is not the "arbitrary unannotated RHS" the
|
|
257
|
+
// header warns against: a call to a name that resolves to a class is
|
|
258
|
+
// the same positive evidence every other language reads from
|
|
259
|
+
// `= new X()`, and without it an unannotated instance field could
|
|
260
|
+
// never act as a call receiver at all. Weakest of the three tiers, so
|
|
261
|
+
// an explicit annotation or a parameter annotation still wins.
|
|
262
|
+
const constructedType = explicitType === null && parameterType === undefined
|
|
263
|
+
? constructorCallTypeName(right, receiverName)
|
|
264
|
+
: undefined;
|
|
265
|
+
const typeName = explicitType?.text ?? parameterType ?? constructedType;
|
|
266
|
+
if (typeName !== undefined) {
|
|
267
|
+
const explicit = explicitType !== null;
|
|
268
|
+
const inferredFromConstructor = constructedType !== undefined;
|
|
269
|
+
const tier = explicit
|
|
270
|
+
? TIER_EXPLICIT
|
|
271
|
+
: inferredFromConstructor
|
|
272
|
+
? TIER_CONSTRUCTOR
|
|
273
|
+
: TIER_PARAMETER;
|
|
274
|
+
const existing = candidates.get(field.text);
|
|
275
|
+
if (existing === undefined || tier >= existing.tier) {
|
|
276
|
+
candidates.set(field.text, {
|
|
277
|
+
tier,
|
|
278
|
+
match: {
|
|
279
|
+
'@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', field, field.text),
|
|
280
|
+
'@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', explicitType ?? right ?? field, typeName),
|
|
281
|
+
// The marker that tells `interpretPythonTypeBinding` which
|
|
282
|
+
// tier this is; an explicit annotation carries neither and
|
|
283
|
+
// reads as `annotation`.
|
|
284
|
+
...(explicit
|
|
285
|
+
? {}
|
|
286
|
+
: inferredFromConstructor
|
|
287
|
+
? {
|
|
288
|
+
'@type-binding.constructor': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.constructor', right ?? field, '1'),
|
|
289
|
+
}
|
|
290
|
+
: {
|
|
291
|
+
'@type-binding.parameter': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.parameter', right ?? field, '1'),
|
|
292
|
+
}),
|
|
293
|
+
'@type-binding.instance-field': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.instance-field', node, '1'),
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Push in reverse so the LIFO walk visits source order. That keeps Map
|
|
302
|
+
// insertion order (and therefore emitted capture order) deterministic.
|
|
303
|
+
for (let i = node.namedChildCount - 1; i >= 0; i--) {
|
|
304
|
+
const child = node.namedChild(i);
|
|
305
|
+
if (child !== null)
|
|
306
|
+
stack.push(child);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return [...candidates.values()].map(({ match }) => match);
|
|
310
|
+
}
|