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,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Method Registry
|
|
4
|
+
*
|
|
5
|
+
* Owner-scoped method index extracted from SymbolTable.
|
|
6
|
+
* Stores Method/Constructor/Function-with-ownerId symbols keyed by
|
|
7
|
+
* `ownerNodeId\0methodName` for O(1) lookup. Supports overloads
|
|
8
|
+
* (array values) and arity-based filtering.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createMethodRegistry = void 0;
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Factory
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const createMethodRegistry = () => {
|
|
16
|
+
const methodByOwner = new Map();
|
|
17
|
+
// Secondary flat-by-name index. Values are the SAME SymbolDefinition
|
|
18
|
+
// references stored under `methodByOwner` — no copy, just a second key.
|
|
19
|
+
// Populated in lockstep by `register()` and emptied by `clear()`.
|
|
20
|
+
const methodsByName = new Map();
|
|
21
|
+
const EMPTY = Object.freeze([]);
|
|
22
|
+
// Set once when a Function+ownerId def lands here, powers the Tier 3
|
|
23
|
+
// dedup fast-path. Monotonic: never unset except on `clear()`.
|
|
24
|
+
let hasFunctionMethodsFlag = false;
|
|
25
|
+
const lookupMethodByOwner = (ownerNodeId, methodName, argCount) => {
|
|
26
|
+
const defs = methodByOwner.get(`${ownerNodeId}\0${methodName}`);
|
|
27
|
+
if (!defs || defs.length === 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
// Arity narrowing: when an argCount is provided and there are multiple
|
|
30
|
+
// overloads, keep only those whose parameterCount can accommodate the
|
|
31
|
+
// call. This resolves arity-differing overloads (e.g. C++ `greet()` vs
|
|
32
|
+
// `greet(string)`) that share the same `ownerId + methodName` key.
|
|
33
|
+
//
|
|
34
|
+
// Candidates with `parameterCount === undefined` (extractor didn't
|
|
35
|
+
// populate the count — typically variadic or unknown) are retained
|
|
36
|
+
// conservatively so that legitimate variadic matches still resolve.
|
|
37
|
+
//
|
|
38
|
+
// Streaming loop avoids allocating a filtered array on the common
|
|
39
|
+
// "arity selects 0 or 1 match" path. We scan once, count arity
|
|
40
|
+
// matches, and only materialize a narrowed array if at least one
|
|
41
|
+
// match was found and at least one non-match exists. If arity rules
|
|
42
|
+
// out every candidate, fall back to the unfiltered set so the
|
|
43
|
+
// caller's fuzzy path still has something to work with.
|
|
44
|
+
let pool = defs;
|
|
45
|
+
if (argCount !== undefined && defs.length > 1) {
|
|
46
|
+
let matchedCount = 0;
|
|
47
|
+
let rejectedCount = 0;
|
|
48
|
+
for (const d of defs) {
|
|
49
|
+
if (d.parameterCount === undefined) {
|
|
50
|
+
matchedCount++;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const min = d.requiredParameterCount ?? d.parameterCount;
|
|
54
|
+
if (argCount >= min && argCount <= d.parameterCount)
|
|
55
|
+
matchedCount++;
|
|
56
|
+
else
|
|
57
|
+
rejectedCount++;
|
|
58
|
+
}
|
|
59
|
+
// Only narrow when the filter actually discriminates: at least one
|
|
60
|
+
// match AND at least one rejection. Pure-match and pure-reject
|
|
61
|
+
// paths both keep the unfiltered pool (the latter because fallback
|
|
62
|
+
// semantics demand it).
|
|
63
|
+
if (matchedCount > 0 && rejectedCount > 0) {
|
|
64
|
+
const arityMatched = [];
|
|
65
|
+
for (const d of defs) {
|
|
66
|
+
if (d.parameterCount === undefined) {
|
|
67
|
+
arityMatched.push(d);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const min = d.requiredParameterCount ?? d.parameterCount;
|
|
71
|
+
if (argCount >= min && argCount <= d.parameterCount)
|
|
72
|
+
arityMatched.push(d);
|
|
73
|
+
}
|
|
74
|
+
pool = arityMatched;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (pool.length === 1)
|
|
78
|
+
return pool[0];
|
|
79
|
+
// Multiple overloads after arity narrowing: return first if all share
|
|
80
|
+
// the same defined returnType (safe for chain resolution), undefined if
|
|
81
|
+
// return types differ (truly ambiguous — can't determine which overload).
|
|
82
|
+
const firstReturnType = pool[0].returnType;
|
|
83
|
+
if (firstReturnType === undefined)
|
|
84
|
+
return undefined;
|
|
85
|
+
for (let i = 1; i < pool.length; i++) {
|
|
86
|
+
if (pool[i].returnType !== firstReturnType)
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return pool[0];
|
|
90
|
+
};
|
|
91
|
+
const lookupMethodByName = (name) => {
|
|
92
|
+
return methodsByName.get(name) ?? EMPTY;
|
|
93
|
+
};
|
|
94
|
+
const lookupAllByOwner = (ownerNodeId, methodName) => {
|
|
95
|
+
return methodByOwner.get(`${ownerNodeId}\0${methodName}`) ?? EMPTY;
|
|
96
|
+
};
|
|
97
|
+
const register = (ownerNodeId, methodName, def) => {
|
|
98
|
+
const key = `${ownerNodeId}\0${methodName}`;
|
|
99
|
+
const existing = methodByOwner.get(key);
|
|
100
|
+
if (existing) {
|
|
101
|
+
existing.push(def);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
methodByOwner.set(key, [def]);
|
|
105
|
+
}
|
|
106
|
+
const byName = methodsByName.get(methodName);
|
|
107
|
+
if (byName) {
|
|
108
|
+
byName.push(def);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
methodsByName.set(methodName, [def]);
|
|
112
|
+
}
|
|
113
|
+
// A `Function`-typed def reaching MethodRegistry means the worker
|
|
114
|
+
// emitted a Python/Rust/Kotlin class method as `Function + ownerId`.
|
|
115
|
+
// It was already written into `SymbolTable.callableByName` by the
|
|
116
|
+
// upstream Function callable-index gate, so the two indexes are no
|
|
117
|
+
// longer disjoint for this registry's lifetime — Tier 3 must dedup.
|
|
118
|
+
if (!hasFunctionMethodsFlag && def.type === 'Function') {
|
|
119
|
+
hasFunctionMethodsFlag = true;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
const clear = () => {
|
|
123
|
+
methodByOwner.clear();
|
|
124
|
+
methodsByName.clear();
|
|
125
|
+
hasFunctionMethodsFlag = false;
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
lookupMethodByOwner,
|
|
129
|
+
lookupMethodByName,
|
|
130
|
+
lookupAllByOwner,
|
|
131
|
+
register,
|
|
132
|
+
clear,
|
|
133
|
+
get hasFunctionMethods() {
|
|
134
|
+
return hasFunctionMethodsFlag;
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
exports.createMethodRegistry = createMethodRegistry;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Owner-keyed member lookup for Step 2 (RFC #909 / PR #1656).
|
|
4
|
+
*
|
|
5
|
+
* Merges MethodRegistry + FieldRegistry hits for `(ownerDefId, memberName)`
|
|
6
|
+
* in O(1) map time per registry — no `defs.byId` scan. Callers that omit
|
|
7
|
+
* this helper and leave `ownedMembersByOwner` unset fall back to an O(|defs|)
|
|
8
|
+
* compatibility scan inside `lookupCore.collectOwnedMembers`.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.lookupOwnedMembersByOwner = lookupOwnedMembersByOwner;
|
|
12
|
+
const EMPTY = Object.freeze([]);
|
|
13
|
+
/**
|
|
14
|
+
* Production hook for `RegistryContext.ownedMembersByOwner`.
|
|
15
|
+
* Returns `[]` on miss (authoritative indexed empty) — never `undefined`.
|
|
16
|
+
*
|
|
17
|
+
* Merges hits from all three owner-keyed registries (methods, fields,
|
|
18
|
+
* nested types) under the same `(ownerDefId, memberName)` key. The
|
|
19
|
+
* caller's `acceptedKinds` filter in `lookupCore` picks the right subset.
|
|
20
|
+
*/
|
|
21
|
+
function lookupOwnedMembersByOwner(model, ownerDefId, memberName) {
|
|
22
|
+
const methods = model.methods.lookupAllByOwner(ownerDefId, memberName);
|
|
23
|
+
const fields = model.fields.lookupAllByOwner(ownerDefId, memberName);
|
|
24
|
+
const nestedTypes = model.types.lookupAllByOwner(ownerDefId, memberName);
|
|
25
|
+
const methodCount = methods.length;
|
|
26
|
+
const fieldCount = fields.length;
|
|
27
|
+
const typeCount = nestedTypes.length;
|
|
28
|
+
const total = methodCount + fieldCount + typeCount;
|
|
29
|
+
if (total === 0)
|
|
30
|
+
return EMPTY;
|
|
31
|
+
if (methodCount === total)
|
|
32
|
+
return methods;
|
|
33
|
+
if (fieldCount === total)
|
|
34
|
+
return fields;
|
|
35
|
+
if (typeCount === total)
|
|
36
|
+
return nestedTypes;
|
|
37
|
+
const merged = new Array(total);
|
|
38
|
+
let i = 0;
|
|
39
|
+
for (let j = 0; j < methodCount; j++)
|
|
40
|
+
merged[i++] = methods[j];
|
|
41
|
+
for (let j = 0; j < fieldCount; j++)
|
|
42
|
+
merged[i++] = fields[j];
|
|
43
|
+
for (let j = 0; j < typeCount; j++)
|
|
44
|
+
merged[i++] = nestedTypes[j];
|
|
45
|
+
return merged;
|
|
46
|
+
}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Registration Dispatch Table
|
|
4
|
+
*
|
|
5
|
+
* Behavior-grouped O(1) dispatch table for routing `SymbolTable.add()`
|
|
6
|
+
* registrations into the semantic registries. Replaces the cascading
|
|
7
|
+
* `if/else` ladder in `symbol-table.ts` with a `Map<NodeLabel, RoutingDecision>`
|
|
8
|
+
* whose entries point to closure-captured hooks.
|
|
9
|
+
*
|
|
10
|
+
* ## Ownership diagram
|
|
11
|
+
*
|
|
12
|
+
* SemanticModel
|
|
13
|
+
* ├── types (TypeRegistry) ← classLikeHook / implHook write here
|
|
14
|
+
* ├── methods (MethodRegistry) ← methodHook writes here
|
|
15
|
+
* ├── fields (FieldRegistry) ← propertyHook writes here
|
|
16
|
+
* └── symbols (SymbolTable) ← owns fileIndex + callableByName,
|
|
17
|
+
* calls dispatch() in add()
|
|
18
|
+
*
|
|
19
|
+
* ## Behavior groups (5 hooks, 13 table entries)
|
|
20
|
+
*
|
|
21
|
+
* | Group | NodeLabel values | Hook | Skip callable? |
|
|
22
|
+
* |---------------|---------------------------------------------------|--------------|----------------|
|
|
23
|
+
* | class-like | Class, Struct, Interface, Enum, Record, Trait | classLikeHook | no |
|
|
24
|
+
* | method-like | Method, Constructor | methodHook | no |
|
|
25
|
+
* | property | Property | propertyHook | YES |
|
|
26
|
+
* | impl-block | Impl | implHook | no |
|
|
27
|
+
* | callable-only | Function, Macro, Delegate | (no entry) | no |
|
|
28
|
+
*
|
|
29
|
+
* Every other `NodeLabel` is "inert" — reached by `fileIndex` only. No
|
|
30
|
+
* specialized registry, no callable index append.
|
|
31
|
+
*
|
|
32
|
+
* ## How to add a new NodeLabel
|
|
33
|
+
*
|
|
34
|
+
* 1. Add the variant to the `NodeLabel` union in `cgraph-shared/src/graph/types.ts`.
|
|
35
|
+
* 2. Decide which behavior group it belongs to by asking "which lookups must
|
|
36
|
+
* return this symbol?" (not "what language feature is it?"). A new Swift
|
|
37
|
+
* `Extension` is class-like if you want owner-scoped method lookup on it;
|
|
38
|
+
* a new Kotlin `Object` is class-like for the same reason.
|
|
39
|
+
* 3. Either:
|
|
40
|
+
* - Add a table entry here pointing at one of the existing hooks, OR
|
|
41
|
+
* - Add it to `CALLABLE_ONLY_LABELS` if it is a free callable, OR
|
|
42
|
+
* - Add it to `INERT_LABELS` if it's metadata-only (File, Folder, Decorator,
|
|
43
|
+
* etc.) — never queried via owner/class lookups.
|
|
44
|
+
* 4. If none of the above fit — the new kind needs a brand-new registry —
|
|
45
|
+
* design the registry first in `model/`, then add a new hook closure
|
|
46
|
+
* and table entries. Update `DISPATCH_LABELS` / the exhaustiveness guard
|
|
47
|
+
* accordingly.
|
|
48
|
+
*
|
|
49
|
+
* The runtime exhaustiveness guard in `symbol-table.ts` will warn if a
|
|
50
|
+
* `NodeLabel` is missing from all three sets.
|
|
51
|
+
*/
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.createRegistrationTable = exports.DISPATCH_LABELS = exports.INERT_LABELS = exports.CALLABLE_ONLY_LABELS = exports.ALL_NODE_LABELS = void 0;
|
|
54
|
+
const symbol_table_js_1 = require("./symbol-table.js");
|
|
55
|
+
/**
|
|
56
|
+
* **Single source of truth** for NodeLabel classification. Every NodeLabel
|
|
57
|
+
* has exactly one behavior category — enforced at compile time by the
|
|
58
|
+
* `as const satisfies Record<NodeLabel, LabelBehavior>` combo:
|
|
59
|
+
*
|
|
60
|
+
* - **Completeness** — `Record<NodeLabel, LabelBehavior>` requires every
|
|
61
|
+
* NodeLabel to be a key. Missing a label fails to compile with
|
|
62
|
+
* "Property 'X' is missing in type ..." naming the drifted label.
|
|
63
|
+
* - **No extras** — `satisfies` performs excess-property checking on
|
|
64
|
+
* object literals, so a non-NodeLabel string key fails to compile.
|
|
65
|
+
* - **No duplicates** — object keys are unique by construction. A label
|
|
66
|
+
* cannot be classified into two categories by accident.
|
|
67
|
+
* - **Valid values** — `LabelBehavior` is a narrow union, so a typo in
|
|
68
|
+
* the category name fails to compile.
|
|
69
|
+
*
|
|
70
|
+
* Adding a new NodeLabel to `cgraph-shared`: TypeScript will flag this
|
|
71
|
+
* file as incomplete. Add the new label with its behavior category and
|
|
72
|
+
* the three `*_LABELS` Sets + `ALL_NODE_LABELS` array below are derived
|
|
73
|
+
* automatically — no separate list to update, no runtime drift detection
|
|
74
|
+
* needed.
|
|
75
|
+
*
|
|
76
|
+
* NOTE: `Type` and `CodeElement` are inert wrappers for language features
|
|
77
|
+
* that don't yet have a dedicated registry (typedefs, synthesized dynamic
|
|
78
|
+
* calls). If future work needs owner-scoped lookup for them, change their
|
|
79
|
+
* category to `'dispatch'` and add a hook in `createRegistrationTable`.
|
|
80
|
+
* Do not special-case them inside `SymbolTable.add()`.
|
|
81
|
+
*/
|
|
82
|
+
const LABEL_BEHAVIOR = {
|
|
83
|
+
// dispatch — owner-scoped registry writes
|
|
84
|
+
Class: 'dispatch',
|
|
85
|
+
Struct: 'dispatch',
|
|
86
|
+
Interface: 'dispatch',
|
|
87
|
+
Enum: 'dispatch',
|
|
88
|
+
Record: 'dispatch',
|
|
89
|
+
Trait: 'dispatch',
|
|
90
|
+
Method: 'dispatch',
|
|
91
|
+
Constructor: 'dispatch',
|
|
92
|
+
Property: 'dispatch',
|
|
93
|
+
Impl: 'dispatch',
|
|
94
|
+
// callable-only — file index + callableByName, no owner scope
|
|
95
|
+
Function: 'callable-only',
|
|
96
|
+
Macro: 'callable-only',
|
|
97
|
+
Delegate: 'callable-only',
|
|
98
|
+
// inert — file index only
|
|
99
|
+
Project: 'inert',
|
|
100
|
+
Package: 'inert',
|
|
101
|
+
Module: 'inert',
|
|
102
|
+
Folder: 'inert',
|
|
103
|
+
File: 'inert',
|
|
104
|
+
Variable: 'inert',
|
|
105
|
+
Decorator: 'inert',
|
|
106
|
+
Import: 'inert',
|
|
107
|
+
Type: 'inert',
|
|
108
|
+
CodeElement: 'inert',
|
|
109
|
+
Community: 'inert',
|
|
110
|
+
Process: 'inert',
|
|
111
|
+
Typedef: 'inert',
|
|
112
|
+
Union: 'inert',
|
|
113
|
+
Namespace: 'inert',
|
|
114
|
+
TypeAlias: 'inert',
|
|
115
|
+
Const: 'inert',
|
|
116
|
+
Static: 'inert',
|
|
117
|
+
Annotation: 'inert',
|
|
118
|
+
Template: 'inert',
|
|
119
|
+
Section: 'inert',
|
|
120
|
+
Route: 'inert',
|
|
121
|
+
Tool: 'inert',
|
|
122
|
+
// Taint/PDG substrate (issue #2080) — a control-flow node, never a
|
|
123
|
+
// symbol-resolution target. Inert: file index only, no owner scope.
|
|
124
|
+
BasicBlock: 'inert',
|
|
125
|
+
// Synthetic external-RPC-service node (spec §6.1). Never a symbol-resolution
|
|
126
|
+
// target — minted by rpc-edges / http-api-calls phases, not the bridge.
|
|
127
|
+
ExternalService: 'inert',
|
|
128
|
+
};
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Derived runtime collections — all keyed off LABEL_BEHAVIOR
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* All known NodeLabels, derived from the keys of `LABEL_BEHAVIOR`. The
|
|
134
|
+
* `satisfies Record<NodeLabel, LabelBehavior>` bijection above proves
|
|
135
|
+
* that `Object.keys(LABEL_BEHAVIOR)` is exactly the NodeLabel set —
|
|
136
|
+
* the cast to `NodeLabel[]` is sound, not a type-system bypass.
|
|
137
|
+
*
|
|
138
|
+
* Consumers (e.g., the semantic-model barrel re-export for tests) can
|
|
139
|
+
* rely on this list being complete by construction. No runtime drift
|
|
140
|
+
* check is needed or possible — the type system is the proof.
|
|
141
|
+
*/
|
|
142
|
+
exports.ALL_NODE_LABELS = Object.keys(LABEL_BEHAVIOR);
|
|
143
|
+
const labelsWithBehavior = (behavior) => exports.ALL_NODE_LABELS.filter((label) => LABEL_BEHAVIOR[label] === behavior);
|
|
144
|
+
/**
|
|
145
|
+
* NodeLabel values that are free callables — appear in `callableByName`
|
|
146
|
+
* but have no owner-scoped specialized registry. Alias of
|
|
147
|
+
* {@link FREE_CALLABLE_TYPES} exported here for taxonomy-test use. The
|
|
148
|
+
* compile-time cross-invariant on `LABEL_BEHAVIOR` above guarantees the
|
|
149
|
+
* alias and the LABEL_BEHAVIOR `callable-only` classification cannot
|
|
150
|
+
* drift.
|
|
151
|
+
*/
|
|
152
|
+
exports.CALLABLE_ONLY_LABELS = symbol_table_js_1.FREE_CALLABLE_TYPES;
|
|
153
|
+
/**
|
|
154
|
+
* NodeLabel values that touch only the file index — no specialized
|
|
155
|
+
* registry, no callable index.
|
|
156
|
+
*/
|
|
157
|
+
exports.INERT_LABELS = new Set(labelsWithBehavior('inert'));
|
|
158
|
+
/**
|
|
159
|
+
* NodeLabel values that have a dispatch table entry. `createRegistrationTable`
|
|
160
|
+
* below must provide a hook for exactly this set — the test file's behavior-
|
|
161
|
+
* group tests and the integration tests pin the hook↔label correspondence.
|
|
162
|
+
*/
|
|
163
|
+
exports.DISPATCH_LABELS = new Set(labelsWithBehavior('dispatch'));
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
// Factory
|
|
166
|
+
// ---------------------------------------------------------------------------
|
|
167
|
+
/**
|
|
168
|
+
* Build the dispatch table. Must be called once per `createSymbolTable`
|
|
169
|
+
* invocation so each hook closes over that SymbolTable's injected
|
|
170
|
+
* registries. Reusing a single module-level instance would cause hooks
|
|
171
|
+
* to write into the wrong SemanticModel.
|
|
172
|
+
*/
|
|
173
|
+
const createRegistrationTable = (deps) => {
|
|
174
|
+
const { types, methods, fields } = deps;
|
|
175
|
+
// Hook 1: class-like — Class, Struct, Interface, Enum, Record, Trait.
|
|
176
|
+
// Shared reference — six table entries point at this one closure.
|
|
177
|
+
const classLikeHook = (name, def) => {
|
|
178
|
+
const qualifiedKey = def.qualifiedName ?? name;
|
|
179
|
+
types.registerClass(name, qualifiedKey, def);
|
|
180
|
+
};
|
|
181
|
+
// Hook 2: method-like — Method, Constructor. Silently skipped if the
|
|
182
|
+
// caller did not provide an ownerId (Property without ownerId is
|
|
183
|
+
// treated the same way).
|
|
184
|
+
const methodHook = (name, def) => {
|
|
185
|
+
if (def.ownerId) {
|
|
186
|
+
methods.register(def.ownerId, name, def);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
// Hook 3: property — Property. Silently skipped without ownerId.
|
|
190
|
+
// Property is not in `FREE_CALLABLE_TYPES`, so `SymbolTable.add()` already
|
|
191
|
+
// excludes it from `callableByName`; common property names like
|
|
192
|
+
// `id` / `name` / `type` never pollute the callable index.
|
|
193
|
+
const propertyHook = (name, def) => {
|
|
194
|
+
if (def.ownerId) {
|
|
195
|
+
fields.register(def.ownerId, name, def);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
// Hook 4: impl-block — Rust `impl` blocks. Kept separate from classLikeHook
|
|
199
|
+
// because heritage resolution must not treat Impls as class candidates
|
|
200
|
+
// (an Impl is not a parent type, it's an ancillary dispatch table).
|
|
201
|
+
const implHook = (name, def) => {
|
|
202
|
+
types.registerImpl(name, def);
|
|
203
|
+
};
|
|
204
|
+
// Single source of truth for the label → hook mapping. The
|
|
205
|
+
// `satisfies Record<DispatchLabel, RegistrationHook>` intersection
|
|
206
|
+
// fails at build time if (a) any label classified as 'dispatch' in
|
|
207
|
+
// `LABEL_BEHAVIOR` is missing here, or (b) any key here is not
|
|
208
|
+
// classified as 'dispatch'. This is the compile-time twin of the
|
|
209
|
+
// runtime taxonomy — no drift possible.
|
|
210
|
+
const dispatchByLabel = {
|
|
211
|
+
// class-like — six labels share the single `classLikeHook` closure,
|
|
212
|
+
// kept in lockstep with `CLASS_TYPES_TUPLE` via the
|
|
213
|
+
// `Record<ClassLikeLabel, 'dispatch'>` cross-invariant on
|
|
214
|
+
// `LABEL_BEHAVIOR`.
|
|
215
|
+
Class: classLikeHook,
|
|
216
|
+
Struct: classLikeHook,
|
|
217
|
+
Interface: classLikeHook,
|
|
218
|
+
Enum: classLikeHook,
|
|
219
|
+
Record: classLikeHook,
|
|
220
|
+
Trait: classLikeHook,
|
|
221
|
+
// method-like — routed via dispatch-key normalization in
|
|
222
|
+
// `wrappedAdd` so Function+ownerId also reaches `methodHook`.
|
|
223
|
+
Method: methodHook,
|
|
224
|
+
Constructor: methodHook,
|
|
225
|
+
// property — callable-index exclusion is enforced by
|
|
226
|
+
// `SymbolTable.add()` (Property is not in `FREE_CALLABLE_TYPES`).
|
|
227
|
+
Property: propertyHook,
|
|
228
|
+
// impl-block — Rust `impl` blocks. Separate from classLikeHook because
|
|
229
|
+
// heritage resolution must not treat Impls as class candidates.
|
|
230
|
+
Impl: implHook,
|
|
231
|
+
};
|
|
232
|
+
return new Map(Object.entries(dispatchByLabel));
|
|
233
|
+
};
|
|
234
|
+
exports.createRegistrationTable = createRegistrationTable;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MRO primitives.
|
|
4
|
+
*
|
|
5
|
+
* `c3Linearize` and its BFS helper `gatherAncestors` are pure functions over a
|
|
6
|
+
* `parentMap` (classId → parent ids). They carry no dependency on the semantic
|
|
7
|
+
* model or graph, so the model layer stays a pure leaf — `mro-processor.ts`
|
|
8
|
+
* (graph-level MRO emission) imports `c3Linearize` / `gatherAncestors` from here.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.c3Linearize = c3Linearize;
|
|
12
|
+
exports.gatherAncestors = gatherAncestors;
|
|
13
|
+
/**
|
|
14
|
+
* Gather all ancestor IDs in BFS / topological order.
|
|
15
|
+
* Returns the linearized list of ancestor IDs (excluding the class itself).
|
|
16
|
+
*
|
|
17
|
+
* Uses a head-pointer BFS (`queue[head++]`) instead of `Array.shift()` to
|
|
18
|
+
* avoid O(n) per-dequeue re-indexing.
|
|
19
|
+
*/
|
|
20
|
+
function gatherAncestors(classId, parentMap) {
|
|
21
|
+
const visited = new Set();
|
|
22
|
+
const order = [];
|
|
23
|
+
const queue = [...(parentMap.get(classId) ?? [])];
|
|
24
|
+
let head = 0;
|
|
25
|
+
while (head < queue.length) {
|
|
26
|
+
const id = queue[head++];
|
|
27
|
+
if (visited.has(id))
|
|
28
|
+
continue;
|
|
29
|
+
visited.add(id);
|
|
30
|
+
order.push(id);
|
|
31
|
+
const grandparents = parentMap.get(id);
|
|
32
|
+
if (grandparents) {
|
|
33
|
+
for (const gp of grandparents) {
|
|
34
|
+
if (!visited.has(gp))
|
|
35
|
+
queue.push(gp);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return order;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Compute C3 linearization for a class given a parentMap.
|
|
43
|
+
* Returns an array of ancestor IDs in C3 order (excluding the class itself),
|
|
44
|
+
* or null if linearization fails (inconsistent or cyclic hierarchy).
|
|
45
|
+
*
|
|
46
|
+
* Re-exported for mro-processor.ts (graph-level MRO emission).
|
|
47
|
+
*/
|
|
48
|
+
function c3Linearize(classId, parentMap, cache, inProgress) {
|
|
49
|
+
if (cache.has(classId))
|
|
50
|
+
return cache.get(classId);
|
|
51
|
+
// Iterative C3 linearization using an explicit work stack. The recursive
|
|
52
|
+
// version overflows the call stack on deep class hierarchies (10K+
|
|
53
|
+
// levels in large Android/Java codebases).
|
|
54
|
+
//
|
|
55
|
+
// Strategy: maintain a stack of { classId, phase } frames. Each frame
|
|
56
|
+
// goes through two phases:
|
|
57
|
+
// ENTER (0) – check cache / cycle, push parent frames to compute first
|
|
58
|
+
// MERGE (1) – all parent linearizations are cached, merge them C3-style
|
|
59
|
+
const visiting = inProgress ?? new Set();
|
|
60
|
+
const ENTER = 0;
|
|
61
|
+
const MERGE = 1;
|
|
62
|
+
const stack = [{ id: classId, phase: ENTER }];
|
|
63
|
+
while (stack.length > 0) {
|
|
64
|
+
const frame = stack[stack.length - 1];
|
|
65
|
+
if (frame.phase === ENTER) {
|
|
66
|
+
// ── ENTER phase ─────────────────────────────────────────────
|
|
67
|
+
if (cache.has(frame.id)) {
|
|
68
|
+
stack.pop();
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (visiting.has(frame.id)) {
|
|
72
|
+
// Cycle detected
|
|
73
|
+
cache.set(frame.id, null);
|
|
74
|
+
stack.pop();
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
visiting.add(frame.id);
|
|
78
|
+
const directParents = parentMap.get(frame.id);
|
|
79
|
+
if (!directParents || directParents.length === 0) {
|
|
80
|
+
visiting.delete(frame.id);
|
|
81
|
+
cache.set(frame.id, []);
|
|
82
|
+
stack.pop();
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
// Switch to MERGE phase and push parents that still need computing
|
|
86
|
+
frame.phase = MERGE;
|
|
87
|
+
let allParentsCached = true;
|
|
88
|
+
for (let i = directParents.length - 1; i >= 0; i--) {
|
|
89
|
+
const pid = directParents[i];
|
|
90
|
+
if (!cache.has(pid)) {
|
|
91
|
+
stack.push({ id: pid, phase: ENTER });
|
|
92
|
+
allParentsCached = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// If all parents are already cached, proceed directly to the MERGE
|
|
96
|
+
// phase below (frame.phase is already MERGE, frame is at stack top).
|
|
97
|
+
// Otherwise, loop back to process the newly-pushed parent frames first.
|
|
98
|
+
if (!allParentsCached) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// ── MERGE phase ───────────────────────────────────────────────
|
|
103
|
+
// directParents is guaranteed non-empty here — the ENTER phase already
|
|
104
|
+
// handles the empty-parents case and pops the frame before switching
|
|
105
|
+
// to MERGE.
|
|
106
|
+
stack.pop();
|
|
107
|
+
const directParents = parentMap.get(frame.id);
|
|
108
|
+
// Build parent linearizations from cache
|
|
109
|
+
const parentLinearizations = [];
|
|
110
|
+
let failed = false;
|
|
111
|
+
for (const pid of directParents) {
|
|
112
|
+
const pLin = cache.get(pid);
|
|
113
|
+
if (pLin === undefined) {
|
|
114
|
+
// Should not happen if phases are ordered correctly, but guard anyway
|
|
115
|
+
failed = true;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
if (pLin === null) {
|
|
119
|
+
// Parent linearization failed (cycle or inconsistent)
|
|
120
|
+
failed = true;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
parentLinearizations.push([pid, ...pLin]);
|
|
124
|
+
}
|
|
125
|
+
if (failed) {
|
|
126
|
+
visiting.delete(frame.id);
|
|
127
|
+
cache.set(frame.id, null);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Add the direct parents list as the final sequence
|
|
131
|
+
const sequences = [...parentLinearizations, [...directParents]];
|
|
132
|
+
const heads = new Uint32Array(sequences.length); // head pointer per sequence
|
|
133
|
+
const result = [];
|
|
134
|
+
// Tail-count map: how many sequences contain this id at index > head.
|
|
135
|
+
// O(1) membership check replaces O(n) indexOf scans.
|
|
136
|
+
const tailCount = new Map();
|
|
137
|
+
for (const seq of sequences) {
|
|
138
|
+
for (let i = 1; i < seq.length; i++) {
|
|
139
|
+
tailCount.set(seq[i], (tailCount.get(seq[i]) ?? 0) + 1);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
let remaining = sequences.reduce((n, s) => n + s.length, 0);
|
|
143
|
+
let inconsistent = false;
|
|
144
|
+
while (remaining > 0) {
|
|
145
|
+
let head = null;
|
|
146
|
+
for (let si = 0; si < sequences.length; si++) {
|
|
147
|
+
if (heads[si] >= sequences[si].length)
|
|
148
|
+
continue;
|
|
149
|
+
const candidate = sequences[si][heads[si]];
|
|
150
|
+
if ((tailCount.get(candidate) ?? 0) === 0) {
|
|
151
|
+
head = candidate;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (head === null) {
|
|
156
|
+
inconsistent = true;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
result.push(head);
|
|
160
|
+
// Advance head pointers past the chosen head; update tail counts
|
|
161
|
+
for (let si = 0; si < sequences.length; si++) {
|
|
162
|
+
if (heads[si] >= sequences[si].length)
|
|
163
|
+
continue;
|
|
164
|
+
if (sequences[si][heads[si]] === head) {
|
|
165
|
+
heads[si]++;
|
|
166
|
+
remaining--;
|
|
167
|
+
// promoted was in this sequence's active tail; now it's the new head — remove from tailCount
|
|
168
|
+
if (heads[si] < sequences[si].length) {
|
|
169
|
+
const promoted = sequences[si][heads[si]];
|
|
170
|
+
const prev = tailCount.get(promoted);
|
|
171
|
+
if (prev <= 1)
|
|
172
|
+
tailCount.delete(promoted);
|
|
173
|
+
else
|
|
174
|
+
tailCount.set(promoted, prev - 1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
visiting.delete(frame.id);
|
|
180
|
+
cache.set(frame.id, inconsistent ? null : result);
|
|
181
|
+
}
|
|
182
|
+
return cache.get(classId) ?? null;
|
|
183
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ScopeResolutionIndexes` — the bundle of materialized indexes produced
|
|
4
|
+
* by the finalize-orchestrator (RFC #909 Ring 2 PKG #921) and attached
|
|
5
|
+
* to `MutableSemanticModel`.
|
|
6
|
+
*
|
|
7
|
+
* Produced by `finalizeScopeModel(parsedFiles, hooks)` in
|
|
8
|
+
* `finalize-orchestrator.ts`. Consumed by the resolution phase (future
|
|
9
|
+
* tickets) where `Registry.lookup` / `resolveTypeRef` query this bundle
|
|
10
|
+
* to answer call-resolution questions without re-walking any AST.
|
|
11
|
+
*
|
|
12
|
+
* ## Lifecycle
|
|
13
|
+
*
|
|
14
|
+
* 1. Pipeline collects `ParsedFile[]` from the parsing-processor (#920).
|
|
15
|
+
* 2. Pipeline invokes `finalizeScopeModel(parsedFiles, hooks)` →
|
|
16
|
+
* returns a `ScopeResolutionIndexes` (this interface).
|
|
17
|
+
* 3. Pipeline calls `model.attachScopeIndexes(indexes)` to stamp them
|
|
18
|
+
* onto the `MutableSemanticModel`. This is a **one-shot write**;
|
|
19
|
+
* subsequent calls throw. After attachment, the indexes are frozen
|
|
20
|
+
* at the type level (everything is `readonly`) and at runtime via
|
|
21
|
+
* `Object.freeze` on the bundle.
|
|
22
|
+
* 4. Resolution callers hold a `SemanticModel` reference and read
|
|
23
|
+
* `model.scopes` to query.
|
|
24
|
+
*
|
|
25
|
+
* ## Content
|
|
26
|
+
*
|
|
27
|
+
* - `scopeTree` / `moduleScopes` / `defs` / `qualifiedNames` — the
|
|
28
|
+
* four Ring 2 SHARED indexes built over per-file artifacts.
|
|
29
|
+
* - `methodDispatch` — MRO + implements materialized view (#914).
|
|
30
|
+
* - `imports` — finalized `ImportEdge[]` per module scope (`parsedImports`
|
|
31
|
+
* resolved through cross-file link + wildcard expansion).
|
|
32
|
+
* - `bindings` — merged bindings per module scope (local + import +
|
|
33
|
+
* wildcard + re-export), with the provider's precedence applied.
|
|
34
|
+
* - `referenceSites` — union of every file's pre-resolution usage
|
|
35
|
+
* facts. Consumed by the resolution phase (future) to emit
|
|
36
|
+
* `Reference` records into `ReferenceIndex`.
|
|
37
|
+
* - `stats` — coarse-grained counts from the shared finalize algorithm
|
|
38
|
+
* (total files/edges, linked vs unresolved, SCC topology).
|
|
39
|
+
*
|
|
40
|
+
* `ReferenceIndex` is deliberately NOT here — it is populated in a later
|
|
41
|
+
* phase (RFC §3.2 Phase 4 / Ring 2 PKG #925) and owned separately.
|
|
42
|
+
*/
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|