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,430 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capture-match → semantic-shape interpreters.
|
|
4
|
+
*
|
|
5
|
+
* Two pure functions, both consumed by the central scope extractor:
|
|
6
|
+
*
|
|
7
|
+
* - `interpretPythonImport` → `ParsedImport`
|
|
8
|
+
* - `interpretPythonTypeBinding` → `ParsedTypeBinding`
|
|
9
|
+
*
|
|
10
|
+
* The matches arrive pre-decomposed by `emitPythonScopeCaptures`
|
|
11
|
+
* (one imported name per match; synthesized `self`/`cls` markers
|
|
12
|
+
* already attached) so these functions are straight-line tag readers.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.NOT_A_USER_GENERIC_SPELLINGS = exports.MAPPING_CONTAINERS = exports.SINGLE_ARG_CONTAINERS = void 0;
|
|
16
|
+
exports.interpretPythonImport = interpretPythonImport;
|
|
17
|
+
exports.interpretPythonTypeBinding = interpretPythonTypeBinding;
|
|
18
|
+
// ─── interpretImport ──────────────────────────────────────────────────────
|
|
19
|
+
function interpretPythonImport(captures) {
|
|
20
|
+
// Markers attached by `splitImportStatement` (import-decomposer.ts):
|
|
21
|
+
// `@import.kind` : 'plain' | 'aliased' | 'from' | 'from-alias' | 'wildcard' | 'dynamic'
|
|
22
|
+
// `@import.name` : the imported symbol name (or module name for plain imports)
|
|
23
|
+
// `@import.alias` : the local alias name (for `as` forms)
|
|
24
|
+
// `@import.source`: the module path (always present except for `dynamic`)
|
|
25
|
+
const kindCap = captures['@import.kind'];
|
|
26
|
+
const nameCap = captures['@import.name'];
|
|
27
|
+
const aliasCap = captures['@import.alias'];
|
|
28
|
+
const sourceCap = captures['@import.source'];
|
|
29
|
+
const kind = kindCap?.text;
|
|
30
|
+
if (kind === undefined)
|
|
31
|
+
return null;
|
|
32
|
+
switch (kind) {
|
|
33
|
+
case 'plain': {
|
|
34
|
+
// `import numpy`
|
|
35
|
+
if (sourceCap === undefined)
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
kind: 'namespace',
|
|
39
|
+
localName: sourceCap.text.split('.')[0], // `import a.b.c` exposes `a`
|
|
40
|
+
importedName: sourceCap.text,
|
|
41
|
+
targetRaw: sourceCap.text,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
case 'aliased': {
|
|
45
|
+
// `import numpy as np`
|
|
46
|
+
if (sourceCap === undefined || aliasCap === undefined)
|
|
47
|
+
return null;
|
|
48
|
+
return {
|
|
49
|
+
kind: 'namespace',
|
|
50
|
+
localName: aliasCap.text,
|
|
51
|
+
importedName: sourceCap.text,
|
|
52
|
+
targetRaw: sourceCap.text,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
case 'from': {
|
|
56
|
+
// `from m import x`
|
|
57
|
+
if (sourceCap === undefined || nameCap === undefined)
|
|
58
|
+
return null;
|
|
59
|
+
return {
|
|
60
|
+
kind: 'named',
|
|
61
|
+
localName: nameCap.text,
|
|
62
|
+
importedName: nameCap.text,
|
|
63
|
+
targetRaw: sourceCap.text,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
case 'from-alias': {
|
|
67
|
+
// `from m import x as y`
|
|
68
|
+
if (sourceCap === undefined || nameCap === undefined || aliasCap === undefined)
|
|
69
|
+
return null;
|
|
70
|
+
return {
|
|
71
|
+
kind: 'alias',
|
|
72
|
+
localName: aliasCap.text,
|
|
73
|
+
importedName: nameCap.text,
|
|
74
|
+
alias: aliasCap.text,
|
|
75
|
+
targetRaw: sourceCap.text,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
case 'wildcard': {
|
|
79
|
+
// `from m import *`
|
|
80
|
+
if (sourceCap === undefined)
|
|
81
|
+
return null;
|
|
82
|
+
return { kind: 'wildcard', targetRaw: sourceCap.text };
|
|
83
|
+
}
|
|
84
|
+
case 'dynamic': {
|
|
85
|
+
// `importlib.import_module(...)` — preserved for diagnostics.
|
|
86
|
+
return {
|
|
87
|
+
kind: 'dynamic-unresolved',
|
|
88
|
+
localName: '',
|
|
89
|
+
targetRaw: sourceCap?.text ?? null,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
default:
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ─── interpretTypeBinding ─────────────────────────────────────────────────
|
|
97
|
+
function interpretPythonTypeBinding(captures) {
|
|
98
|
+
// Synthesized `self` / `cls` captures carry `@type-binding.name` and
|
|
99
|
+
// `@type-binding.type` directly — same shape as parameter annotations,
|
|
100
|
+
// source differs.
|
|
101
|
+
const nameCap = captures['@type-binding.name'];
|
|
102
|
+
const typeCap = captures['@type-binding.type'];
|
|
103
|
+
if (nameCap === undefined || typeCap === undefined)
|
|
104
|
+
return null;
|
|
105
|
+
// Strip surrounding quotes for PEP 484 forward references:
|
|
106
|
+
// `def f(x: "User")`. Then unwrap nullable unions — `User | None`,
|
|
107
|
+
// `None | User`, `Optional[User]` — to the concrete class name so
|
|
108
|
+
// receiver-typed resolution treats nullable receivers identically to
|
|
109
|
+
// non-nullable ones. Finally strip single-arg generic wrappers so
|
|
110
|
+
// `list[User]` / `Iterable[User]` behave like `User` for iterable
|
|
111
|
+
// for-loop chain propagation.
|
|
112
|
+
const rawType = stripGeneric(stripNullable(stripForwardRefQuotes(typeCap.text.trim())));
|
|
113
|
+
// Order matters: more specific anchor captures take precedence. `self`
|
|
114
|
+
// and `cls` are synthesized with their own marker captures; the SCM
|
|
115
|
+
// anchor topic captures (`@type-binding.parameter`,
|
|
116
|
+
// `@type-binding.annotation`, `@type-binding.constructor`) distinguish
|
|
117
|
+
// the variable-annotation and constructor-inferred forms from the
|
|
118
|
+
// classic parameter annotation.
|
|
119
|
+
let source = 'parameter-annotation';
|
|
120
|
+
if (captures['@type-binding.self'] !== undefined)
|
|
121
|
+
source = 'self';
|
|
122
|
+
// `cls` is a self-like receiver; share the source label so downstream
|
|
123
|
+
// `Registry.lookup` Step 2 treats them identically.
|
|
124
|
+
else if (captures['@type-binding.cls'] !== undefined)
|
|
125
|
+
source = 'self';
|
|
126
|
+
// Before the instance-field arm, not after it: `self.x = Outer()` (#2807)
|
|
127
|
+
// carries BOTH markers, and its type is inferred from the CONSTRUCTOR CALL —
|
|
128
|
+
// the weakest of the three tiers — so a class that also annotates the field
|
|
129
|
+
// keeps the annotation. Testing constructor first is what lets the
|
|
130
|
+
// instance-field arm below stay flat; the two orders agree on every input,
|
|
131
|
+
// since they differ only where both markers are present and both then say
|
|
132
|
+
// 'constructor-inferred'.
|
|
133
|
+
else if (captures['@type-binding.constructor'] !== undefined)
|
|
134
|
+
source = 'constructor-inferred';
|
|
135
|
+
else if (captures['@type-binding.instance-field'] !== undefined)
|
|
136
|
+
source =
|
|
137
|
+
captures['@type-binding.parameter'] !== undefined ? 'parameter-annotation' : 'annotation';
|
|
138
|
+
else if (captures['@type-binding.annotation'] !== undefined)
|
|
139
|
+
source = 'annotation';
|
|
140
|
+
else if (captures['@type-binding.alias'] !== undefined)
|
|
141
|
+
source = 'assignment-inferred';
|
|
142
|
+
else if (captures['@type-binding.return'] !== undefined)
|
|
143
|
+
source = 'return-annotation';
|
|
144
|
+
return { boundName: nameCap.text, rawTypeName: rawType, source };
|
|
145
|
+
}
|
|
146
|
+
function stripForwardRefQuotes(text) {
|
|
147
|
+
if ((text.startsWith('"') && text.endsWith('"')) ||
|
|
148
|
+
(text.startsWith("'") && text.endsWith("'"))) {
|
|
149
|
+
return text.slice(1, -1);
|
|
150
|
+
}
|
|
151
|
+
return text;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Container bases whose SINGLE type argument is the element type.
|
|
155
|
+
*
|
|
156
|
+
* The single source of truth for both the matcher below and the property test
|
|
157
|
+
* that asserts every one of them is also declined as a user generic — the two
|
|
158
|
+
* lists drifting apart is the defect this arrangement exists to make
|
|
159
|
+
* impossible. Order is significant only in that it is the regex alternation
|
|
160
|
+
* order; keep additions grouped with their family.
|
|
161
|
+
*/
|
|
162
|
+
exports.SINGLE_ARG_CONTAINERS = [
|
|
163
|
+
'list',
|
|
164
|
+
'List',
|
|
165
|
+
'set',
|
|
166
|
+
'Set',
|
|
167
|
+
'tuple',
|
|
168
|
+
'Tuple',
|
|
169
|
+
'Iterable',
|
|
170
|
+
'Iterator',
|
|
171
|
+
'Sequence',
|
|
172
|
+
'Generator',
|
|
173
|
+
'AsyncIterable',
|
|
174
|
+
'AsyncIterator',
|
|
175
|
+
];
|
|
176
|
+
/** Container bases whose SECOND type argument is the value type. See {@link SINGLE_ARG_CONTAINERS}. */
|
|
177
|
+
exports.MAPPING_CONTAINERS = [
|
|
178
|
+
'dict',
|
|
179
|
+
'Dict',
|
|
180
|
+
'Mapping',
|
|
181
|
+
'MutableMapping',
|
|
182
|
+
'OrderedDict',
|
|
183
|
+
'DefaultDict',
|
|
184
|
+
];
|
|
185
|
+
const QUALIFIER = '(?:[A-Za-z_][A-Za-z0-9_]*\\.)?';
|
|
186
|
+
const SINGLE_ARG_CONTAINER_RE = new RegExp(`^${QUALIFIER}(?:${exports.SINGLE_ARG_CONTAINERS.join('|')})\\[([^,\\]]+)\\]$`);
|
|
187
|
+
const MAPPING_CONTAINER_RE = new RegExp(`^${QUALIFIER}(?:${exports.MAPPING_CONTAINERS.join('|')})\\[[^,\\]]+,\\s*([^\\]]+)\\]$`);
|
|
188
|
+
/**
|
|
189
|
+
* Unwrap a single-arg generic collection wrapper — `list[User]`,
|
|
190
|
+
* `set[User]`, `Iterable[User]`, `Sequence[User]`, `Iterator[User]`,
|
|
191
|
+
* `Generator[User, ...]` — to its element type.
|
|
192
|
+
*
|
|
193
|
+
* Point: for-loop and cross-file chain propagation need the element
|
|
194
|
+
* type, not the container. Multi-arg generics (`dict[str, User]`,
|
|
195
|
+
* `Callable[[int], User]`) are left alone — the element semantics
|
|
196
|
+
* aren't unambiguous and the scope-chain fallback handles them at
|
|
197
|
+
* resolution time.
|
|
198
|
+
*/
|
|
199
|
+
function stripGeneric(text) {
|
|
200
|
+
const single = text.match(SINGLE_ARG_CONTAINER_RE);
|
|
201
|
+
if (single !== null)
|
|
202
|
+
return single[1].trim();
|
|
203
|
+
// dict[K, V] / Dict[K, V] / Mapping[K, V] — strip to value type V.
|
|
204
|
+
// For-loop destructuring of `for k, v in d.items()` binds `v` to
|
|
205
|
+
// `d`; the chain-follow then unwraps the dict annotation to V.
|
|
206
|
+
// Single-key dict `dict[K]` is not legal Python, so two args is the
|
|
207
|
+
// only shape worth handling. Match a top-level K up to the first
|
|
208
|
+
// comma and a V to the closing bracket; nested generics in V (e.g.
|
|
209
|
+
// `dict[str, list[User]]`) are left for a downstream strip pass.
|
|
210
|
+
const dict = text.match(MAPPING_CONTAINER_RE);
|
|
211
|
+
if (dict !== null)
|
|
212
|
+
return dict[1].trim();
|
|
213
|
+
// A subscripted type the two allow-lists above did NOT claim is a
|
|
214
|
+
// user-defined GENERIC, not a container: `Repo[User]`, `Handler[Req, Res]`.
|
|
215
|
+
// Its base names one declaration — `Repo[User]` and `Repo[Order]` are the
|
|
216
|
+
// same `class Repo(Generic[T])` — so reduce to that base, exactly as Java's
|
|
217
|
+
// and Swift's interpreters already do for their `<…>` spelling (#2833).
|
|
218
|
+
//
|
|
219
|
+
// Guarded by a DENY set rather than reached by fallthrough, because "the two
|
|
220
|
+
// rules above did not match" is NOT the same as "not a container". Two
|
|
221
|
+
// measured counterexamples, both of which this branch got wrong before the
|
|
222
|
+
// guard existed:
|
|
223
|
+
// - `dict[str, list[User]]` — the dict rule's value group cannot span a
|
|
224
|
+
// nested `]`, so it declines and the shape falls through. Reducing it to
|
|
225
|
+
// `dict` destroys the value type the dict rule explicitly leaves "for a
|
|
226
|
+
// downstream strip pass"; the annotation must survive intact instead.
|
|
227
|
+
// - `Callable[[int], User]`, `Literal["a"]`, `Annotated[int, F()]`,
|
|
228
|
+
// `Union[A, B]`, `tuple[int, ...]` — typing SPECIAL FORMS, not classes.
|
|
229
|
+
// Reducing them yields a bare `Callable`/`Literal`/`Union`, which binds
|
|
230
|
+
// to a workspace class of that name if one exists — a fabricated edge,
|
|
231
|
+
// and those names are ordinary enough for a real codebase to declare.
|
|
232
|
+
// Anything named here keeps its as-written text and resolves as it did
|
|
233
|
+
// before #2833.
|
|
234
|
+
//
|
|
235
|
+
// Only reached for genuine annotations: every Python `@type-binding.type`
|
|
236
|
+
// capture is a `(type)`, `(identifier)`, `(attribute)` or `(dotted_name)`
|
|
237
|
+
// node, so a subscripted VALUE expression (`arr[0]`) never arrives here.
|
|
238
|
+
//
|
|
239
|
+
// The as-written spelling is not lost — `scope-extractor` keeps it on
|
|
240
|
+
// `TypeRef.declaredSpelling` whenever it differs from the reduced name,
|
|
241
|
+
// which is what the receiver fold's index step reads.
|
|
242
|
+
const userGeneric = text.match(/^((?:[A-Za-z_][A-Za-z0-9_]*\.)*[A-Za-z_][A-Za-z0-9_]*)\[.+\]$/s);
|
|
243
|
+
if (userGeneric !== null) {
|
|
244
|
+
const qualified = userGeneric[1].trim();
|
|
245
|
+
const base = qualified.slice(qualified.lastIndexOf('.') + 1);
|
|
246
|
+
if (!isNotAUserGenericBase(base))
|
|
247
|
+
return qualified;
|
|
248
|
+
}
|
|
249
|
+
return text;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Whether a subscripted annotation's base names a Python type-system construct
|
|
253
|
+
* rather than a workspace class — see {@link NOT_A_USER_GENERIC_SPELLINGS}.
|
|
254
|
+
*
|
|
255
|
+
* CASE-FOLDED, and that is the load-bearing part. PEP 585 gave nearly every
|
|
256
|
+
* container two spellings — the builtin/`collections` one and the `typing`
|
|
257
|
+
* alias (`deque` / `typing.Deque`, `frozenset` / `typing.FrozenSet`,
|
|
258
|
+
* `defaultdict` / `typing.DefaultDict`) — which differ ONLY in case. Matching
|
|
259
|
+
* exactly meant each pair had to be listed twice and any half-pair was a silent
|
|
260
|
+
* escape: `deque` was listed, `Deque` was not, so `self.dq: Deque[User]`
|
|
261
|
+
* reduced to `Deque` and bound to a workspace `class Deque` (#2855). Folding
|
|
262
|
+
* case closes that axis by construction instead of by vigilance.
|
|
263
|
+
*
|
|
264
|
+
* The cost is that a workspace class whose name is a case VARIANT of a stdlib
|
|
265
|
+
* construct (`class deque(Generic[T])`) stops reducing. PEP 8 makes such a
|
|
266
|
+
* class vanishingly rare, and the loss is a missing edge — recoverable — where
|
|
267
|
+
* the gain is not minting a confident wrong one.
|
|
268
|
+
*/
|
|
269
|
+
function isNotAUserGenericBase(base) {
|
|
270
|
+
return NOT_A_USER_GENERIC.has(base.toLowerCase());
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Bases a subscripted annotation may carry that are NOT user-defined generics.
|
|
274
|
+
*
|
|
275
|
+
* SCOPE — the standard library, and deliberately nothing else. The names below
|
|
276
|
+
* are the documented Python type-system surface (`typing`'s deprecated PEP 585
|
|
277
|
+
* aliases and its special forms, plus the stdlib classes those aliases point
|
|
278
|
+
* at); that universe is CLOSED and versioned by CPython, so the list is
|
|
279
|
+
* auditable against
|
|
280
|
+
* <https://docs.python.org/3/library/typing.html#deprecated-aliases>.
|
|
281
|
+
*
|
|
282
|
+
* Third-party generics (`Mapped[int]`, `QuerySet[User]`) are NOT listed. That
|
|
283
|
+
* universe is open, so enumerating it only ever chases the last escape, and
|
|
284
|
+
* denying an ordinary name like `Model` would cost real edges in the many
|
|
285
|
+
* projects that legitimately declare one. Those spellings still reduce to their
|
|
286
|
+
* base, and the base is now admitted only on the grounds `resolveErasedBaseName`
|
|
287
|
+
* applies at resolution time — the file's scope chain binds it, the declaration
|
|
288
|
+
* is in this very file, the index proves the name is a template family, or the
|
|
289
|
+
* file has no cross-file class channel to be absent from. A `Mapped[User]` whose
|
|
290
|
+
* base the file cannot see therefore binds nothing, which is the structural
|
|
291
|
+
* answer this parse-time pass cannot give and no longer has to.
|
|
292
|
+
*
|
|
293
|
+
* Two distinct reasons to decline, both always-correct at this layer:
|
|
294
|
+
* - CONTAINERS, including ones the two rules above do not own. Reducing
|
|
295
|
+
* `deque[User]` to `deque` types a receiver as the container and retargets
|
|
296
|
+
* every call in a for-loop chain, and reducing `dict[str, list[User]]` to
|
|
297
|
+
* `dict` destroys the value type the dict rule leaves for a downstream pass.
|
|
298
|
+
* - `typing` SPECIAL FORMS, which are not classes at all. `Callable`,
|
|
299
|
+
* `Literal`, `Union` reduce to a bare name that binds to a workspace class
|
|
300
|
+
* of that name if one exists — a fabricated edge.
|
|
301
|
+
*
|
|
302
|
+
* Members are listed ONCE per case-insensitive concept: {@link
|
|
303
|
+
* isNotAUserGenericBase} folds case, so the builtin spelling covers its PEP 585
|
|
304
|
+
* `typing` twin (`deque` covers `Deque`, `frozenset` covers `FrozenSet`).
|
|
305
|
+
* Non-generic ABCs (`Hashable`, `Sized`) are omitted — they cannot be written
|
|
306
|
+
* subscripted, so they never reach this branch.
|
|
307
|
+
*
|
|
308
|
+
* Exported for the property test that asserts the case-fold closure holds
|
|
309
|
+
* behaviourally; nothing else should read it.
|
|
310
|
+
*/
|
|
311
|
+
exports.NOT_A_USER_GENERIC_SPELLINGS = [
|
|
312
|
+
// ── builtins subscriptable since PEP 585 ──────────────────────────────────
|
|
313
|
+
'list',
|
|
314
|
+
'set',
|
|
315
|
+
'frozenset',
|
|
316
|
+
'tuple',
|
|
317
|
+
'dict',
|
|
318
|
+
'type',
|
|
319
|
+
// ── `collections` ─────────────────────────────────────────────────────────
|
|
320
|
+
'defaultdict',
|
|
321
|
+
'OrderedDict',
|
|
322
|
+
'ChainMap',
|
|
323
|
+
'Counter',
|
|
324
|
+
'deque',
|
|
325
|
+
// ── `collections.abc`, the subscriptable members ──────────────────────────
|
|
326
|
+
'Mapping',
|
|
327
|
+
'MutableMapping',
|
|
328
|
+
'Sequence',
|
|
329
|
+
'MutableSequence',
|
|
330
|
+
'AbstractSet',
|
|
331
|
+
'MutableSet',
|
|
332
|
+
'Collection',
|
|
333
|
+
'Container',
|
|
334
|
+
'Reversible',
|
|
335
|
+
'Iterable',
|
|
336
|
+
'Iterator',
|
|
337
|
+
'Generator',
|
|
338
|
+
'AsyncIterable',
|
|
339
|
+
'AsyncIterator',
|
|
340
|
+
'AsyncGenerator',
|
|
341
|
+
'Awaitable',
|
|
342
|
+
'Coroutine',
|
|
343
|
+
'KeysView',
|
|
344
|
+
'ValuesView',
|
|
345
|
+
'ItemsView',
|
|
346
|
+
'MappingView',
|
|
347
|
+
// ── `contextlib`, and the `typing` aliases to it ──────────────────────────
|
|
348
|
+
'ContextManager',
|
|
349
|
+
'AsyncContextManager',
|
|
350
|
+
'AbstractContextManager',
|
|
351
|
+
'AbstractAsyncContextManager',
|
|
352
|
+
// ── `re`, and the `typing` aliases to it ──────────────────────────────────
|
|
353
|
+
// `Pattern` and `Match` ARE classes, so reducing them is not wrong the way
|
|
354
|
+
// reducing `Callable` is; they are declined because in Python annotations
|
|
355
|
+
// these spellings are overwhelmingly the `re` types, while a workspace class
|
|
356
|
+
// of the same name is a parser's own `Pattern`/`Match` and would be bound
|
|
357
|
+
// with no import evidence whatsoever. Same policy as the receiver-chain
|
|
358
|
+
// resolver's: a missing edge is recoverable, a confident wrong one is not.
|
|
359
|
+
'Pattern',
|
|
360
|
+
'Match',
|
|
361
|
+
// ── I/O streams (`typing.IO` and its two subclasses) ──────────────────────
|
|
362
|
+
'IO',
|
|
363
|
+
'TextIO',
|
|
364
|
+
'BinaryIO',
|
|
365
|
+
// ── stdlib generic classes with ordinary names ────────────────────────────
|
|
366
|
+
// Same policy call as `Pattern`/`Match` above, and the sharpest instance of
|
|
367
|
+
// it: `asyncio.Task[Result]` reduces to `asyncio.Task`, whose dotted-tail
|
|
368
|
+
// fallback then single-matches an unrelated workspace `class Task`.
|
|
369
|
+
'Queue',
|
|
370
|
+
'Task',
|
|
371
|
+
'Future',
|
|
372
|
+
'PathLike',
|
|
373
|
+
// ── `typing` special forms — not classes ──────────────────────────────────
|
|
374
|
+
'Callable',
|
|
375
|
+
'Literal',
|
|
376
|
+
'Annotated',
|
|
377
|
+
'Union',
|
|
378
|
+
'Optional',
|
|
379
|
+
'Final',
|
|
380
|
+
'ClassVar',
|
|
381
|
+
// `typing.Type` is the PEP 585 alias for the builtin `type` listed above, and
|
|
382
|
+
// the case fold already covers it — see the one-entry-per-concept rule.
|
|
383
|
+
'TypeGuard',
|
|
384
|
+
'TypeIs',
|
|
385
|
+
'Unpack',
|
|
386
|
+
'Required',
|
|
387
|
+
'NotRequired',
|
|
388
|
+
'ReadOnly',
|
|
389
|
+
'Concatenate',
|
|
390
|
+
'LiteralString',
|
|
391
|
+
// ── generic machinery: bases and type-parameter declarations ──────────────
|
|
392
|
+
// `Generic[T]`/`Protocol[T]` are written subscripted for real. The three
|
|
393
|
+
// declaration forms are not subscriptable in valid Python, but this
|
|
394
|
+
// interpreter checks no grammar — it reduces whatever text the annotation
|
|
395
|
+
// capture carried — so they are declined defensively.
|
|
396
|
+
'Generic',
|
|
397
|
+
'Protocol',
|
|
398
|
+
'TypeVar',
|
|
399
|
+
'ParamSpec',
|
|
400
|
+
'TypeVarTuple',
|
|
401
|
+
];
|
|
402
|
+
/** Case-folded lookup index over {@link NOT_A_USER_GENERIC_SPELLINGS}. */
|
|
403
|
+
const NOT_A_USER_GENERIC = new Set(exports.NOT_A_USER_GENERIC_SPELLINGS.map((name) => name.toLowerCase()));
|
|
404
|
+
/**
|
|
405
|
+
* Unwrap nullable type annotations so downstream resolution treats
|
|
406
|
+
* `User | None`, `None | User`, and `Optional[User]` identically to
|
|
407
|
+
* `User`. A missing/unknown variant returns the input unchanged.
|
|
408
|
+
*
|
|
409
|
+
* This is a syntactic strip, not a semantic parse — it handles the
|
|
410
|
+
* canonical PEP-604 and `typing.Optional` shapes that cover the
|
|
411
|
+
* overwhelming majority of real-world Python annotations and punts on
|
|
412
|
+
* exotic unions (e.g. `User | Error`, which is ambiguous and should not
|
|
413
|
+
* auto-bind to one arm).
|
|
414
|
+
*/
|
|
415
|
+
function stripNullable(text) {
|
|
416
|
+
// `Optional[X]` / `typing.Optional[X]` / `t.Optional[X]`
|
|
417
|
+
const optMatch = text.match(/^(?:[A-Za-z_][A-Za-z0-9_]*\.)?Optional\[(.+)\]$/);
|
|
418
|
+
if (optMatch !== null)
|
|
419
|
+
return optMatch[1].trim();
|
|
420
|
+
// Binary union forms. A three-arm or larger union (`User | None | Error`)
|
|
421
|
+
// is ambiguous for single-receiver inference, so we leave it alone.
|
|
422
|
+
const parts = text.split('|').map((p) => p.trim());
|
|
423
|
+
if (parts.length !== 2)
|
|
424
|
+
return text;
|
|
425
|
+
if (parts[0] === 'None')
|
|
426
|
+
return parts[1];
|
|
427
|
+
if (parts[1] === 'None')
|
|
428
|
+
return parts[0];
|
|
429
|
+
return text;
|
|
430
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Python LEGB precedence merge for the `mergeBindings` hook.
|
|
4
|
+
*
|
|
5
|
+
* Tier ranking (lower wins in shadowing):
|
|
6
|
+
*
|
|
7
|
+
* - 0: `local` — an `x = …` or `def x` or `class x` in this scope
|
|
8
|
+
* - 1: `import` / `namespace` / `reexport` — `from m import x`,
|
|
9
|
+
* `import m`, public re-exports
|
|
10
|
+
* - 2: `wildcard` — `from m import *`
|
|
11
|
+
*
|
|
12
|
+
* Within a surviving tier we de-dup by `DefId`, last-write-wins (Python
|
|
13
|
+
* semantics: a later assignment replaces an earlier one for lookup
|
|
14
|
+
* purposes).
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.pythonMergeBindings = pythonMergeBindings;
|
|
18
|
+
const TIER_LOCAL = 0;
|
|
19
|
+
const TIER_IMPORT = 1;
|
|
20
|
+
const TIER_WILDCARD = 2;
|
|
21
|
+
const TIER_UNKNOWN = 3;
|
|
22
|
+
function tierOf(b) {
|
|
23
|
+
switch (b.origin) {
|
|
24
|
+
case 'local':
|
|
25
|
+
return TIER_LOCAL;
|
|
26
|
+
case 'reexport':
|
|
27
|
+
case 'import':
|
|
28
|
+
case 'namespace':
|
|
29
|
+
return TIER_IMPORT;
|
|
30
|
+
case 'wildcard':
|
|
31
|
+
return TIER_WILDCARD;
|
|
32
|
+
default:
|
|
33
|
+
return TIER_UNKNOWN;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function pythonMergeBindings(bindings) {
|
|
37
|
+
if (bindings.length === 0)
|
|
38
|
+
return bindings;
|
|
39
|
+
let bestTier = Number.POSITIVE_INFINITY;
|
|
40
|
+
for (const b of bindings)
|
|
41
|
+
bestTier = Math.min(bestTier, tierOf(b));
|
|
42
|
+
const survivors = bindings.filter((b) => tierOf(b) === bestTier);
|
|
43
|
+
const seen = new Map();
|
|
44
|
+
for (const b of survivors)
|
|
45
|
+
seen.set(b.def.nodeId, b);
|
|
46
|
+
return [...seen.values()];
|
|
47
|
+
}
|