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,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Synthesize `@type-binding.this` captures for TypeScript instance-like
|
|
4
|
+
* methods.
|
|
5
|
+
*
|
|
6
|
+
* Tree-sitter can't cleanly express "the implicit `this` receiver of a
|
|
7
|
+
* non-static member of a class / interface / abstract class" via a
|
|
8
|
+
* static `.scm` pattern, so we walk up the AST in code — mirrors
|
|
9
|
+
* Python's `self` / `cls` and C#'s `this` / `base` synthesis.
|
|
10
|
+
*
|
|
11
|
+
* Scope coverage:
|
|
12
|
+
*
|
|
13
|
+
* - `method_definition` inside `class_declaration`,
|
|
14
|
+
* `abstract_class_declaration`, or `class_expression` → synthesize
|
|
15
|
+
* `this` → enclosing class name.
|
|
16
|
+
* - `method_signature` / `abstract_method_signature` inside
|
|
17
|
+
* `interface_declaration` or `abstract_class_declaration` →
|
|
18
|
+
* synthesize `this` → enclosing type's name (so interface method
|
|
19
|
+
* bodies' `this.x` chains resolve via the interface's field
|
|
20
|
+
* annotations).
|
|
21
|
+
* - `arrow_function` / `function_expression` that is a direct value
|
|
22
|
+
* of a `public_field_definition` (class field) — `m = () => {}` —
|
|
23
|
+
* synthesize `this` → enclosing class name. These capture `this`
|
|
24
|
+
* lexically; without synthesis, their body's `this.foo` wouldn't
|
|
25
|
+
* resolve.
|
|
26
|
+
*
|
|
27
|
+
* Not synthesized (intentionally):
|
|
28
|
+
*
|
|
29
|
+
* - `static` methods / static fields. `this` in a static context
|
|
30
|
+
* refers to the class constructor, not an instance; we leave the
|
|
31
|
+
* binding empty and let chain resolution fall through to the
|
|
32
|
+
* class's static members lookup.
|
|
33
|
+
* - Regular `function_declaration` / `function_expression` at
|
|
34
|
+
* module level or in a non-class context. No enclosing type, no
|
|
35
|
+
* `this` semantics.
|
|
36
|
+
* - Arrow functions nested inside a method body. The scope-chain
|
|
37
|
+
* walk in `tsReceiverBinding` finds the outer method's `this`
|
|
38
|
+
* naturally, matching TS's lexical-this rule for arrow functions.
|
|
39
|
+
*
|
|
40
|
+
* Each synthesized match emits the anchor captures needed by
|
|
41
|
+
* `interpretTsTypeBinding`:
|
|
42
|
+
*
|
|
43
|
+
* `@type-binding.this` (source discriminator — interpret maps to 'self')
|
|
44
|
+
* `@type-binding.name` (the literal `'this'`)
|
|
45
|
+
* `@type-binding.type` (the enclosing type's name)
|
|
46
|
+
*/
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.THIS_REBINDING_BOUNDARY_TYPES = void 0;
|
|
49
|
+
exports.synthesizeTsReceiverBinding = synthesizeTsReceiverBinding;
|
|
50
|
+
const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
|
|
51
|
+
/** Node types that define a TypeScript "type with instance members". */
|
|
52
|
+
const TYPE_DECL_NODE_TYPES = new Set([
|
|
53
|
+
'class_declaration',
|
|
54
|
+
'abstract_class_declaration',
|
|
55
|
+
'class',
|
|
56
|
+
'interface_declaration',
|
|
57
|
+
]);
|
|
58
|
+
/** Scope function nodes that could be a class method body. */
|
|
59
|
+
const CLASS_MEMBER_FUNCTION_TYPES = new Set([
|
|
60
|
+
'method_definition',
|
|
61
|
+
'method_signature',
|
|
62
|
+
'abstract_method_signature',
|
|
63
|
+
]);
|
|
64
|
+
/** Function-like values that can back a class field (`m = () => {}`). */
|
|
65
|
+
const CLASS_FIELD_FUNCTION_TYPES = new Set(['arrow_function', 'function_expression']);
|
|
66
|
+
/**
|
|
67
|
+
* Produce zero or one `CaptureMatch` synthesizing `this` for `fnNode`.
|
|
68
|
+
*
|
|
69
|
+
* - `null` — function has no synthetic `this` (free / static /
|
|
70
|
+
* not-in-class / no name on enclosing type).
|
|
71
|
+
* - One match — anchor on the function body so the synthetic binding
|
|
72
|
+
* attaches to the function's scope (not the outer class scope).
|
|
73
|
+
*
|
|
74
|
+
* The caller is responsible for passing a `fnNode` whose type is one
|
|
75
|
+
* of the scope function nodes the scope query emits.
|
|
76
|
+
*/
|
|
77
|
+
function synthesizeTsReceiverBinding(fnNode) {
|
|
78
|
+
// Classify the function's role.
|
|
79
|
+
const role = classifyFunctionRole(fnNode);
|
|
80
|
+
if (role === null)
|
|
81
|
+
return null;
|
|
82
|
+
// Static methods / static fields don't have an instance `this`.
|
|
83
|
+
if (isStaticMember(role.memberNode))
|
|
84
|
+
return null;
|
|
85
|
+
// Find enclosing type declaration. Walking past function-like
|
|
86
|
+
// boundaries is fine — nested local functions inside a method can
|
|
87
|
+
// still reference outer `this` through the lexical chain, but we
|
|
88
|
+
// only synthesize on the immediate function body. The resolver's
|
|
89
|
+
// scope-chain walk reaches ancestor synthesized bindings for nested
|
|
90
|
+
// arrow functions.
|
|
91
|
+
const enclosingType = findEnclosingType(role.memberNode);
|
|
92
|
+
if (enclosingType === null)
|
|
93
|
+
return null;
|
|
94
|
+
const typeName = getTypeDeclName(enclosingType);
|
|
95
|
+
if (typeName === null)
|
|
96
|
+
return null;
|
|
97
|
+
// Anchor the synthetic capture on the function body so the binding
|
|
98
|
+
// lands in the method's scope, not its parent type scope. Method
|
|
99
|
+
// signatures in interfaces / abstract classes have no body — use
|
|
100
|
+
// the method node itself as the anchor; scope-extractor attaches
|
|
101
|
+
// it to the function scope created by the `@scope.function`
|
|
102
|
+
// anchor at the same range.
|
|
103
|
+
const anchorNode = fnNode.childForFieldName('body') ?? fnNode;
|
|
104
|
+
return buildThisBinding(anchorNode, typeName);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Decide whether `fnNode` participates as a class member. Returns
|
|
108
|
+
* `null` when the function is not structurally "a class instance
|
|
109
|
+
* member" — e.g. a free function, a non-method arrow expression, an
|
|
110
|
+
* arrow inside a method body (those inherit `this` via scope chain
|
|
111
|
+
* lookup, no synthesis needed).
|
|
112
|
+
*/
|
|
113
|
+
function classifyFunctionRole(fnNode) {
|
|
114
|
+
if (CLASS_MEMBER_FUNCTION_TYPES.has(fnNode.type)) {
|
|
115
|
+
return { memberNode: fnNode };
|
|
116
|
+
}
|
|
117
|
+
if (CLASS_FIELD_FUNCTION_TYPES.has(fnNode.type)) {
|
|
118
|
+
// `public_field_definition` represents a class field. Only when
|
|
119
|
+
// the arrow/function-expression is a DIRECT value of a field do
|
|
120
|
+
// we treat it as a class method with synthesized `this`.
|
|
121
|
+
const parent = fnNode.parent;
|
|
122
|
+
if (parent !== null && parent.type === 'public_field_definition') {
|
|
123
|
+
const valueField = parent.childForFieldName('value');
|
|
124
|
+
if (valueField !== null && valueField.startIndex === fnNode.startIndex) {
|
|
125
|
+
return { memberNode: parent };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
/** Class-body definitions carry an optional `accessibility_modifier` and
|
|
132
|
+
* optional `static` keyword as named children. The `static` token is
|
|
133
|
+
* usually a plain child of the member node — not a named field — so
|
|
134
|
+
* we scan children for a token whose text is exactly `static`. */
|
|
135
|
+
function isStaticMember(memberNode) {
|
|
136
|
+
for (let i = 0; i < memberNode.childCount; i++) {
|
|
137
|
+
const c = memberNode.child(i);
|
|
138
|
+
if (c === null)
|
|
139
|
+
continue;
|
|
140
|
+
// `static` can appear as an unnamed token or as a `readonly` /
|
|
141
|
+
// `static` keyword node depending on grammar version; check text.
|
|
142
|
+
if (c.text === 'static')
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Nodes that REBIND `this`, so the walk for an enclosing type must stop at them.
|
|
149
|
+
*
|
|
150
|
+
* Without these the walk ran to the top of the file and happily synthesized a binding
|
|
151
|
+
* from a type that does not own the member. An object-literal method nested in a class
|
|
152
|
+
* bound `this` to the CLASS:
|
|
153
|
+
*
|
|
154
|
+
* class A { outer() { const o = { inner() { return this.x; } }; return o; } }
|
|
155
|
+
*
|
|
156
|
+
* `this` inside `o.inner` is `o`, never `A` — so every `this.…` in such a method
|
|
157
|
+
* resolved against the wrong type. Only the module-level object literal escaped, because
|
|
158
|
+
* there was no enclosing class to reach.
|
|
159
|
+
*
|
|
160
|
+
* An arrow is deliberately absent: it inherits `this` lexically, so the walk SHOULD pass
|
|
161
|
+
* through it (that is what makes a class-field arrow `m = () => this.x` resolve).
|
|
162
|
+
*/
|
|
163
|
+
exports.THIS_REBINDING_BOUNDARY_TYPES = new Set([
|
|
164
|
+
'object', // object literal — `this` is the literal, not any enclosing type
|
|
165
|
+
'function_declaration',
|
|
166
|
+
'function_expression',
|
|
167
|
+
'generator_function',
|
|
168
|
+
'generator_function_declaration',
|
|
169
|
+
]);
|
|
170
|
+
function findEnclosingType(node) {
|
|
171
|
+
let cur = node.parent;
|
|
172
|
+
while (cur !== null) {
|
|
173
|
+
// Boundary before the type check: a rebinding node between the member and a type
|
|
174
|
+
// means the type does not own this `this`.
|
|
175
|
+
if (exports.THIS_REBINDING_BOUNDARY_TYPES.has(cur.type))
|
|
176
|
+
return null;
|
|
177
|
+
if (TYPE_DECL_NODE_TYPES.has(cur.type))
|
|
178
|
+
return cur;
|
|
179
|
+
cur = cur.parent;
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
/** Return the declared name of a class / interface / abstract-class.
|
|
184
|
+
* `class_expression` ( `const X = class { … }` ) may lack a name —
|
|
185
|
+
* in that case we return `null` and the caller skips synthesis (the
|
|
186
|
+
* outer variable's name is the usable handle, but wiring it would
|
|
187
|
+
* require a separate walk; defer to a follow-up). */
|
|
188
|
+
function getTypeDeclName(typeNode) {
|
|
189
|
+
const nameField = typeNode.childForFieldName('name');
|
|
190
|
+
if (nameField === null)
|
|
191
|
+
return null;
|
|
192
|
+
return nameField.text;
|
|
193
|
+
}
|
|
194
|
+
function buildThisBinding(anchorNode, typeText) {
|
|
195
|
+
const m = {
|
|
196
|
+
'@type-binding.this': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.this', anchorNode),
|
|
197
|
+
'@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', anchorNode, 'this'),
|
|
198
|
+
'@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', anchorNode, typeText),
|
|
199
|
+
};
|
|
200
|
+
return m;
|
|
201
|
+
}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript `ScopeResolver` registered in `SCOPE_RESOLVERS` and
|
|
4
|
+
* consumed by the generic `runScopeResolution` orchestrator
|
|
5
|
+
* (RFC #909 Ring 3).
|
|
6
|
+
*
|
|
7
|
+
* Third migration after Python and C#. Follows the same minimal
|
|
8
|
+
* wiring-only pattern — per-hook logic lives in the sibling modules
|
|
9
|
+
* (`arity.ts`, `merge-bindings.ts`, `import-target.ts`, etc.).
|
|
10
|
+
*
|
|
11
|
+
* See ./index.ts for the per-module rationale and the full list of
|
|
12
|
+
* known limitations. The canonical capture vocabulary is pinned in
|
|
13
|
+
* ./query.ts (TYPESCRIPT_SCOPE_QUERY constant).
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.typescriptScopeResolver = void 0;
|
|
17
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
18
|
+
const utils_js_1 = require("../../../../lib/utils.js");
|
|
19
|
+
const mro_js_1 = require("../../scope-resolution/passes/mro.js");
|
|
20
|
+
const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
|
|
21
|
+
const node_lookup_js_1 = require("../../scope-resolution/graph-bridge/node-lookup.js");
|
|
22
|
+
const typescript_js_1 = require("../typescript.js");
|
|
23
|
+
const language_config_js_1 = require("../../language-config.js");
|
|
24
|
+
const utils_js_2 = require("../../import-resolvers/utils.js");
|
|
25
|
+
const shared_js_1 = require("../../type-extractors/shared.js");
|
|
26
|
+
const index_js_2 = require("./index.js");
|
|
27
|
+
const nuxt_auto_imports_js_1 = require("./nuxt-auto-imports.js");
|
|
28
|
+
const TYPESCRIPT_TYPE_ONLY_BINDING_TYPES = new Set([
|
|
29
|
+
'Interface',
|
|
30
|
+
'Type',
|
|
31
|
+
'TypeAlias',
|
|
32
|
+
'Typedef',
|
|
33
|
+
'Trait',
|
|
34
|
+
'Annotation',
|
|
35
|
+
'Decorator',
|
|
36
|
+
]);
|
|
37
|
+
/**
|
|
38
|
+
* Build a `resolveImportTarget` adapter that memoizes the workspace
|
|
39
|
+
* file list, the lower-cased file list, and the per-pass `resolveCache`
|
|
40
|
+
* across every import lookup in a single workspace pass. The
|
|
41
|
+
* orchestrator passes the same `ReadonlySet` reference for every call
|
|
42
|
+
* within a pass — we use that identity to detect when the workspace
|
|
43
|
+
* changes and recompute the derived state lazily.
|
|
44
|
+
*
|
|
45
|
+
* Without this memoization, `resolveTsTarget` re-derived
|
|
46
|
+
* `allFileList` and `normalizedFileList` (both O(N_files)) and threw
|
|
47
|
+
* away the `resolveCache` on every import — O(N_files × N_imports)
|
|
48
|
+
* total work for what should be O(N_files + N_imports).
|
|
49
|
+
*/
|
|
50
|
+
function makeTsResolveImportTarget() {
|
|
51
|
+
let cached = null;
|
|
52
|
+
return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
53
|
+
if (cached === null || cached.key !== allFilePaths) {
|
|
54
|
+
const allFileList = Array.from(allFilePaths);
|
|
55
|
+
const normalizedFileList = allFileList.map((f) => f.toLowerCase());
|
|
56
|
+
cached = {
|
|
57
|
+
key: allFilePaths,
|
|
58
|
+
allFilePaths: new Set(allFilePaths),
|
|
59
|
+
allFileList,
|
|
60
|
+
normalizedFileList,
|
|
61
|
+
index: (0, utils_js_2.buildSuffixIndex)(normalizedFileList, allFileList),
|
|
62
|
+
resolveCache: new Map(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const cfg = resolutionConfig;
|
|
66
|
+
const ws = {
|
|
67
|
+
fromFile,
|
|
68
|
+
allFilePaths: cached.allFilePaths,
|
|
69
|
+
allFileList: cached.allFileList,
|
|
70
|
+
normalizedFileList: cached.normalizedFileList,
|
|
71
|
+
index: cached.index,
|
|
72
|
+
resolveCache: cached.resolveCache,
|
|
73
|
+
tsconfigPaths: cfg?.tsconfigPaths ?? null,
|
|
74
|
+
};
|
|
75
|
+
return (0, index_js_2.resolveTsTarget)(targetRaw, ws);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const typescriptScopeResolver = {
|
|
79
|
+
// One hook, both routes. TypeScript exposes collection views as METHOD calls
|
|
80
|
+
// (`.values()`), which the call-expression branch already handles, so the
|
|
81
|
+
// accessor route yields nothing here — but it is now the same hook rather
|
|
82
|
+
// than a second one left undefined.
|
|
83
|
+
elementTypeOf: shared_js_1.indexOnlyElementType,
|
|
84
|
+
// Construction is keyword-prefixed: `new Service(db).doWork()` (#2708).
|
|
85
|
+
constructionSyntax: { keyword: 'new' },
|
|
86
|
+
language: index_js_1.SupportedLanguages.TypeScript,
|
|
87
|
+
languageProvider: typescript_js_1.typescriptProvider,
|
|
88
|
+
importEdgeReason: 'typescript-scope: import',
|
|
89
|
+
resolveImportTarget: makeTsResolveImportTarget(),
|
|
90
|
+
// Threaded into `resolveImportTarget` so tsconfig path aliases
|
|
91
|
+
// (`@/services/user`, `~/x`, ...) resolve through the same standard
|
|
92
|
+
// resolver branch the legacy DAG uses. One I/O round-trip per
|
|
93
|
+
// workspace pass; the orchestrator awaits this once.
|
|
94
|
+
// `nuxtAutoImports` is null for non-Nuxt projects (no .nuxt/imports.d.ts),
|
|
95
|
+
// so this adds zero overhead to ordinary TypeScript repos.
|
|
96
|
+
loadResolutionConfig: async (repoPath) => ({
|
|
97
|
+
tsconfigPaths: await (0, language_config_js_1.loadTsconfigPaths)(repoPath),
|
|
98
|
+
nuxtAutoImports: await (0, nuxt_auto_imports_js_1.loadNuxtAutoImports)(repoPath),
|
|
99
|
+
}),
|
|
100
|
+
// TypeScript declaration merging + LEGB: local > import > wildcard,
|
|
101
|
+
// separated by declaration space (value / type / namespace). The
|
|
102
|
+
// per-scope id is unused (shadowing is computed from origin + def.type),
|
|
103
|
+
// so we don't need to synthesize a Scope here.
|
|
104
|
+
mergeBindings: (existing, incoming) => [...(0, index_js_2.typescriptMergeBindings)([...existing, ...incoming])],
|
|
105
|
+
// Adapter: typescriptArityCompatibility uses (def, callsite); the
|
|
106
|
+
// ScopeResolver contract is (callsite, def).
|
|
107
|
+
arityCompatibility: (callsite, def) => (0, index_js_2.typescriptArityCompatibility)(def, callsite),
|
|
108
|
+
buildMro: (graph, parsedFiles, nodeLookup) => (0, mro_js_1.buildMro)(graph, parsedFiles, nodeLookup, mro_js_1.defaultLinearize),
|
|
109
|
+
populateOwners: (parsed) => (0, walkers_js_1.populateClassOwnedMembers)(parsed),
|
|
110
|
+
// TypeScript uses `super` for super-class dispatch as a plain
|
|
111
|
+
// identifier or as `super()` in constructors. Match both — `super`
|
|
112
|
+
// on its own (`super.foo`, `super[x]`) and `super(...)` (constructor
|
|
113
|
+
// chain). This also correctly rejects identifiers that merely
|
|
114
|
+
// contain the substring `super` (e.g. `superman`).
|
|
115
|
+
isSuperReceiver: (text) => /^super(\s*\(|\s*\.|\s*\[|\s*$)/.test(text.trim()),
|
|
116
|
+
// TypeScript is statically typed — field-fallback heuristic off
|
|
117
|
+
// (the type-binding layer produces precise owner types). Return-
|
|
118
|
+
// type propagation across imports on (matches the legacy DAG's
|
|
119
|
+
// behavior: explicit return-type annotations flow across `export`
|
|
120
|
+
// boundaries and resolve chained member calls).
|
|
121
|
+
fieldFallbackOnMethodLookup: false,
|
|
122
|
+
propagatesReturnTypesAcrossImports: true,
|
|
123
|
+
// TypeScript uses `.values()` / `.keys()` method-call syntax for collection
|
|
124
|
+
// views -- no property-style accessors like C#'s `Dictionary<K,V>.Values` --
|
|
125
|
+
// so `elementTypeOf` answers only the `index` route and lets the regular
|
|
126
|
+
// member-call branch handle the rest.
|
|
127
|
+
//
|
|
128
|
+
// `collapseMemberCallsByCallerTarget` left undefined (= false) --
|
|
129
|
+
// TypeScript legacy DAG emits one edge per call site, so
|
|
130
|
+
// per-site dedup is the parity target.
|
|
131
|
+
//
|
|
132
|
+
// `populateNamespaceSiblings` left undefined -- TypeScript requires
|
|
133
|
+
// an explicit `import` / namespace augmentation for cross-file
|
|
134
|
+
// visibility; there's no implicit same-namespace sibling rule
|
|
135
|
+
// like C#'s.
|
|
136
|
+
//
|
|
137
|
+
// `hoistTypeBindingsToModule` -- `tsBindingScopeFor` DOES hoist
|
|
138
|
+
// method return-type bindings to the enclosing Module scope
|
|
139
|
+
// (mirrors C#), so enable the walk-up that lets the compound-
|
|
140
|
+
// receiver resolver find them.
|
|
141
|
+
hoistTypeBindingsToModule: true,
|
|
142
|
+
/**
|
|
143
|
+
* Emit CALLS edges for Nuxt/Nitro auto-imported symbols that are used
|
|
144
|
+
* without an explicit import statement.
|
|
145
|
+
*
|
|
146
|
+
* Nuxt makes composables and server utils available project-wide via its
|
|
147
|
+
* auto-import system. Because no `import` statement exists, the standard
|
|
148
|
+
* scope-resolution passes cannot create call-graph edges for these symbols.
|
|
149
|
+
* This hook recovers those edges after all normal resolution has run.
|
|
150
|
+
*
|
|
151
|
+
* For each TypeScript file the hook:
|
|
152
|
+
* 1. Builds the set of files already explicitly imported (to avoid
|
|
153
|
+
* creating duplicate edges for symbols imported conventionally).
|
|
154
|
+
* 2. Iterates parsed free-call reference sites and checks each against the
|
|
155
|
+
* auto-import map selected for the caller's Nuxt/Nitro scope.
|
|
156
|
+
* 3. For each hit that is not shadowed by a local binding or explicit
|
|
157
|
+
* import, emits a CALLS edge from the file's File node to the target
|
|
158
|
+
* function node, and an IMPORTS edge from the caller file to the source
|
|
159
|
+
* file (once per pair).
|
|
160
|
+
*
|
|
161
|
+
* Confidence is 0.75 (below the 0.9 used for fully resolved edges) to
|
|
162
|
+
* signal that these edges are heuristic rather than type-checked.
|
|
163
|
+
*/
|
|
164
|
+
emitPostResolutionEdges(graph, parsedFiles, nodeLookup, indexes, ctx) {
|
|
165
|
+
const cfg = ctx.resolutionConfig;
|
|
166
|
+
const autoImports = cfg?.nuxtAutoImports;
|
|
167
|
+
if (!autoImports || !(0, nuxt_auto_imports_js_1.hasNuxtAutoImports)(autoImports))
|
|
168
|
+
return;
|
|
169
|
+
// Pre-build a file -> explicit imported local names index so importing one
|
|
170
|
+
// symbol from a source does not suppress other auto-imported symbols from it.
|
|
171
|
+
const explicitImportNamesByFile = new Map();
|
|
172
|
+
for (const [scopeId, edges] of indexes.imports) {
|
|
173
|
+
const scope = indexes.scopeTree.getScope(scopeId);
|
|
174
|
+
if (!scope?.filePath)
|
|
175
|
+
continue;
|
|
176
|
+
let names = explicitImportNamesByFile.get(scope.filePath);
|
|
177
|
+
if (!names) {
|
|
178
|
+
names = new Set();
|
|
179
|
+
explicitImportNamesByFile.set(scope.filePath, names);
|
|
180
|
+
}
|
|
181
|
+
for (const edge of edges) {
|
|
182
|
+
// Record the local name whether or not the import resolved to a file.
|
|
183
|
+
// An explicit import of a name — even from an unresolved external
|
|
184
|
+
// package (`import { useAuto } from '@vueuse/core'`) — is authoritative
|
|
185
|
+
// shadowing intent and must suppress the auto-import for that name.
|
|
186
|
+
if (edge.localName)
|
|
187
|
+
names.add(edge.localName);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
for (const parsedFile of parsedFiles) {
|
|
191
|
+
const { filePath } = parsedFile;
|
|
192
|
+
if (!filePath.endsWith('.ts') && !filePath.endsWith('.tsx'))
|
|
193
|
+
continue;
|
|
194
|
+
const fileId = (0, utils_js_1.generateId)('File', filePath);
|
|
195
|
+
const explicitImports = explicitImportNamesByFile.get(filePath) ?? new Set();
|
|
196
|
+
// Track (sourceFile) pairs already handled for this caller to avoid
|
|
197
|
+
// emitting duplicate IMPORTS edges and duplicate CALLS edges per symbol.
|
|
198
|
+
const emittedImports = new Set();
|
|
199
|
+
const emittedCalls = new Set();
|
|
200
|
+
for (const site of parsedFile.referenceSites) {
|
|
201
|
+
if (site.kind !== 'call' || site.callForm !== 'free')
|
|
202
|
+
continue;
|
|
203
|
+
const localName = site.name;
|
|
204
|
+
const entry = (0, nuxt_auto_imports_js_1.getNuxtAutoImportEntry)(autoImports, localName, filePath);
|
|
205
|
+
if (!entry)
|
|
206
|
+
continue;
|
|
207
|
+
const { exportName, sourceFile } = entry;
|
|
208
|
+
// Skip when the file already binds this name explicitly, when the file
|
|
209
|
+
// IS the source, or when a lexical same-file binding shadows it.
|
|
210
|
+
if (explicitImports.has(localName) ||
|
|
211
|
+
sourceFile === filePath ||
|
|
212
|
+
hasLocalBindingInScopeChain(site.inScope, localName, filePath, indexes)) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
// Emit one IMPORTS edge per (caller, sourceFile) pair.
|
|
216
|
+
if (!emittedImports.has(sourceFile)) {
|
|
217
|
+
emittedImports.add(sourceFile);
|
|
218
|
+
const targetFileId = (0, utils_js_1.generateId)('File', sourceFile);
|
|
219
|
+
if (graph.getNode(targetFileId)) {
|
|
220
|
+
graph.addRelationship({
|
|
221
|
+
id: (0, utils_js_1.generateId)('IMPORTS', `${fileId}->nuxt-auto-import->${targetFileId}`),
|
|
222
|
+
sourceId: fileId,
|
|
223
|
+
targetId: targetFileId,
|
|
224
|
+
type: 'IMPORTS',
|
|
225
|
+
confidence: 0.75,
|
|
226
|
+
reason: 'nuxt-auto-import-file',
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Emit one CALLS edge per (caller, symbol) pair.
|
|
231
|
+
const callKey = `${sourceFile}::${localName}`;
|
|
232
|
+
if (emittedCalls.has(callKey))
|
|
233
|
+
continue;
|
|
234
|
+
emittedCalls.add(callKey);
|
|
235
|
+
// Look up the graph node by export name first, fall back to local name.
|
|
236
|
+
// The fallback handles `default as X` where the function is named X.
|
|
237
|
+
const targetNodeId = nodeLookup.get((0, node_lookup_js_1.simpleKey)(sourceFile, exportName)) ??
|
|
238
|
+
(exportName !== localName ? nodeLookup.get((0, node_lookup_js_1.simpleKey)(sourceFile, localName)) : undefined);
|
|
239
|
+
if (!targetNodeId || !graph.getNode(targetNodeId))
|
|
240
|
+
continue;
|
|
241
|
+
graph.addRelationship({
|
|
242
|
+
id: (0, utils_js_1.generateId)('CALLS', `${fileId}:nuxt-auto-import:${localName}->${targetNodeId}`),
|
|
243
|
+
sourceId: fileId,
|
|
244
|
+
targetId: targetNodeId,
|
|
245
|
+
type: 'CALLS',
|
|
246
|
+
confidence: 0.75,
|
|
247
|
+
reason: 'nuxt-auto-import',
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
exports.typescriptScopeResolver = typescriptScopeResolver;
|
|
254
|
+
function occupiesTypeScriptValueSpace(type) {
|
|
255
|
+
return !TYPESCRIPT_TYPE_ONLY_BINDING_TYPES.has(type);
|
|
256
|
+
}
|
|
257
|
+
function hasLocalBindingInScopeChain(scopeId, name, filePath, indexes) {
|
|
258
|
+
const visited = new Set();
|
|
259
|
+
let cursor = scopeId;
|
|
260
|
+
while (cursor !== null && cursor !== undefined && !visited.has(cursor)) {
|
|
261
|
+
visited.add(cursor);
|
|
262
|
+
const scope = indexes.scopeTree.getScope(cursor);
|
|
263
|
+
if (!scope)
|
|
264
|
+
return false;
|
|
265
|
+
const localBindings = scope.bindings.get(name);
|
|
266
|
+
if (localBindings?.some((binding) => binding.origin === 'local' &&
|
|
267
|
+
binding.def.filePath === filePath &&
|
|
268
|
+
occupiesTypeScriptValueSpace(binding.def.type))) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
// Type-annotated function parameters — and other value-space type facts
|
|
272
|
+
// such as `self` and variable annotations — live in `scope.typeBindings`,
|
|
273
|
+
// not `scope.bindings`. A parameter named like a composable genuinely
|
|
274
|
+
// shadows the auto-import, and typeBindings never holds a pure type that
|
|
275
|
+
// belongs to callable space, so a same-file presence check here cannot
|
|
276
|
+
// over-suppress a legitimate auto-import.
|
|
277
|
+
//
|
|
278
|
+
// Residual (known limitation): this catches parameters whose annotation the
|
|
279
|
+
// TS scope query records as a type-binding (`p: Named`, generics, unions,
|
|
280
|
+
// predefined, arrays). Function-typed params (`p: () => void`), untyped
|
|
281
|
+
// params, destructured locals (`const { x } = …`), and catch-clause vars
|
|
282
|
+
// are captured by NEITHER map — the scope query emits no `@declaration` /
|
|
283
|
+
// `@type-binding` for them — so those shadow forms still leak an edge.
|
|
284
|
+
// Closing that needs shared TS scope-query/extractor changes that alter call
|
|
285
|
+
// resolution beyond Nuxt, so it is deferred to a follow-up rather than fixed
|
|
286
|
+
// here.
|
|
287
|
+
if (scope.filePath === filePath && scope.typeBindings.has(name)) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
cursor = scope.parent;
|
|
291
|
+
}
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Trivial / no-op-ish hooks for the TypeScript provider. Kept together
|
|
4
|
+
* because each is a few lines and they share a common theme: making
|
|
5
|
+
* the provider's choice explicit rather than relying on "absence ==
|
|
6
|
+
* default" so reviewers don't have to re-derive the analysis.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.tsBindingScopeFor = tsBindingScopeFor;
|
|
10
|
+
exports.tsImportOwningScope = tsImportOwningScope;
|
|
11
|
+
exports.tsReceiverBinding = tsReceiverBinding;
|
|
12
|
+
const scope_tree_walk_js_1 = require("../../utils/scope-tree-walk.js");
|
|
13
|
+
// ─── bindingScopeFor ──────────────────────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* TypeScript/JavaScript has block-scoped `let`/`const` (the innermost
|
|
16
|
+
* default covers these) but function-scoped `var` — which hoists to
|
|
17
|
+
* the enclosing **function or module** scope, bypassing intermediate
|
|
18
|
+
* blocks. JS also function-hoists `function_declaration` to the same
|
|
19
|
+
* level.
|
|
20
|
+
*
|
|
21
|
+
* We distinguish var from let/const by sniffing the `@declaration.variable`
|
|
22
|
+
* capture's leading keyword. The capture's text begins with the
|
|
23
|
+
* source-literal keyword (`var ` / `let ` / `const `) because the
|
|
24
|
+
* anchor is the outer `lexical_declaration` / `variable_declaration`
|
|
25
|
+
* node — there's no whitespace before the keyword in any well-formed
|
|
26
|
+
* TS/JS source.
|
|
27
|
+
*
|
|
28
|
+
* Additionally hoists **method return-type bindings**
|
|
29
|
+
* (`@type-binding.return`) all the way to the Module scope, matching
|
|
30
|
+
* C#: the compound-receiver walker and `propagateImportedReturnTypes`
|
|
31
|
+
* both read from module-level typeBindings for cross-file chain
|
|
32
|
+
* propagation.
|
|
33
|
+
*/
|
|
34
|
+
function tsBindingScopeFor(decl, innermost, tree) {
|
|
35
|
+
// Method return type: hoist to Module (mirrors csharpBindingScopeFor).
|
|
36
|
+
if (decl['@type-binding.return'] !== undefined) {
|
|
37
|
+
return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Module');
|
|
38
|
+
}
|
|
39
|
+
// Parameter property (`constructor(public address: Address)`): hoist
|
|
40
|
+
// to the enclosing Class scope so `user.address` field access
|
|
41
|
+
// resolves through the class's typeBindings. The regular
|
|
42
|
+
// @type-binding.parameter binding still fires for the constructor
|
|
43
|
+
// scope; this one adds a second binding on the class.
|
|
44
|
+
if (decl['@type-binding.parameter-property'] !== undefined) {
|
|
45
|
+
return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Class');
|
|
46
|
+
}
|
|
47
|
+
// `this.p = new Outer()` binds the FIELD, not a method-local, so the binding
|
|
48
|
+
// belongs on the class the way an annotated field's does — that is the only
|
|
49
|
+
// place `typeOfMemberOnClass` reads. Left on the innermost scope it would sit
|
|
50
|
+
// on the method's own Function scope and never be found (#2807). Same shape
|
|
51
|
+
// as the parameter-property branch above.
|
|
52
|
+
//
|
|
53
|
+
// Gated on the marker the `this.<field> = new …` pattern emits, never on
|
|
54
|
+
// `@type-binding.constructor` at large: that capture also fires for
|
|
55
|
+
// `const o = new Outer()` inside a method, and hoisting THOSE to the class
|
|
56
|
+
// would take method locals out of their own scope and mistype them.
|
|
57
|
+
//
|
|
58
|
+
// This walk is UNCONDITIONAL by design, and stays correct only because the
|
|
59
|
+
// marker's producers are bounded: the query nests the pattern under
|
|
60
|
+
// `class_body → method_definition → statement_block`, and `emitTsScopeCaptures`
|
|
61
|
+
// drops the static-method case. So `this` here provably IS an instance of the
|
|
62
|
+
// class this lands on, and a Class ancestor always exists — no `walkToScope`
|
|
63
|
+
// null-fallback onto some unrelated innermost scope. Anything that widens the
|
|
64
|
+
// marker's producers has to re-establish both, or restore the guard here.
|
|
65
|
+
if (decl['@type-binding.this-field'] !== undefined) {
|
|
66
|
+
return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Class');
|
|
67
|
+
}
|
|
68
|
+
// `var` declarations: hoist to nearest enclosing Function or Module.
|
|
69
|
+
const variable = decl['@declaration.variable'];
|
|
70
|
+
if (variable !== undefined && isVarDeclaration(variable.text)) {
|
|
71
|
+
return (0, scope_tree_walk_js_1.walkToScope)(innermost, tree, 'Function', 'Module');
|
|
72
|
+
}
|
|
73
|
+
// Function declarations are already anchored at their definition
|
|
74
|
+
// site via `@scope.function`; hoisting is a no-op for them (JS
|
|
75
|
+
// function hoisting is about visibility before the definition, not
|
|
76
|
+
// about placing the binding in a different scope). The scope tree
|
|
77
|
+
// already attaches their name to the enclosing scope. No override
|
|
78
|
+
// needed.
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
/** `var x = 1;` vs `let x = 1;` / `const x = 1;`. The capture's text
|
|
82
|
+
* starts at the outer declaration's `startIndex` in source, which is
|
|
83
|
+
* the keyword's first character — no leading whitespace possible. */
|
|
84
|
+
function isVarDeclaration(captureText) {
|
|
85
|
+
return (captureText.startsWith('var ') ||
|
|
86
|
+
captureText.startsWith('var\t') ||
|
|
87
|
+
captureText.startsWith('var\n'));
|
|
88
|
+
}
|
|
89
|
+
// ─── importOwningScope ────────────────────────────────────────────────────
|
|
90
|
+
/**
|
|
91
|
+
* TypeScript imports are syntactically top-level: `import_statement` is
|
|
92
|
+
* legal only inside `program` (the module root). `namespace X { … }`
|
|
93
|
+
* bodies CAN contain imports (`internal_module`), in which case the
|
|
94
|
+
* import scopes to the namespace. Dynamic `import()` calls appear
|
|
95
|
+
* inside any scope but their runtime effect is still a module-level
|
|
96
|
+
* resolution — we attach the `ParsedImport` to the innermost Module /
|
|
97
|
+
* Namespace scope so the binding is visible through the full subtree.
|
|
98
|
+
*
|
|
99
|
+
* Returning `null` delegates to the central default, which walks to
|
|
100
|
+
* the nearest enclosing `Module`/`Namespace`. That matches our rule,
|
|
101
|
+
* so we only override when we explicitly need a non-default scope
|
|
102
|
+
* (we don't).
|
|
103
|
+
*/
|
|
104
|
+
function tsImportOwningScope(_imp, _innermost, _tree) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// ─── receiverBinding ──────────────────────────────────────────────────────
|
|
108
|
+
/**
|
|
109
|
+
* Look up `this` on the function scope's type bindings.
|
|
110
|
+
*
|
|
111
|
+
* `this` is synthesized as a type binding on instance-method function
|
|
112
|
+
* scopes during capture emission (`receiver-binding.ts`). Arrow
|
|
113
|
+
* functions and nested functions that reference `this` naturally
|
|
114
|
+
* resolve it via the scope-chain walk — if the arrow function is a
|
|
115
|
+
* class method (`m = () => {}`), it gets a synthesized `this`; if it
|
|
116
|
+
* is nested inside a class method, the scope-chain lookup finds the
|
|
117
|
+
* outer method's `this`. This mirrors TypeScript's lexical-this
|
|
118
|
+
* semantics for arrow functions.
|
|
119
|
+
*
|
|
120
|
+
* Returns `null` for:
|
|
121
|
+
* - static methods (no `this` synthesized)
|
|
122
|
+
* - free functions / module-level code (no enclosing class-like)
|
|
123
|
+
* - non-Function scopes
|
|
124
|
+
*
|
|
125
|
+
* Caveat: a non-arrow `function` declaration nested inside a method
|
|
126
|
+
* DOES see the outer `this` via our scope-chain lookup, even though at
|
|
127
|
+
* runtime its `this` is independently bound (strict-mode `undefined`,
|
|
128
|
+
* sloppy `globalThis`). We accept this false-positive — the real-world
|
|
129
|
+
* pattern that relies on independent `this` inside a nested regular
|
|
130
|
+
* function inside a class method is extremely rare, and catching it
|
|
131
|
+
* would require injecting a `this: undefined` shadow on every non-
|
|
132
|
+
* arrow function scope. Documented as a known limitation in
|
|
133
|
+
* `index.ts`.
|
|
134
|
+
*/
|
|
135
|
+
function tsReceiverBinding(functionScope) {
|
|
136
|
+
if (functionScope.kind !== 'Function')
|
|
137
|
+
return null;
|
|
138
|
+
return functionScope.typeBindings.get('this') ?? null;
|
|
139
|
+
}
|