gitnexus 1.6.10-rc.99 → 1.6.10
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/README.md +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +77 -2
- package/dist/core/index-freshness.js +109 -2
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +65 -19
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +14 -2
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +19 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +598 -16
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +77 -32
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/query.js +15 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +211 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.js +29 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +39 -1
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +39 -6
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +87 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +267 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +214 -29
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +309 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/error-D9MtuG9s.js +1 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +16 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -9,7 +9,51 @@ import { SupportedLanguages } from '../../../_shared/index.js';
|
|
|
9
9
|
import { defineLanguage } from '../language-provider.js';
|
|
10
10
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
11
11
|
import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
|
|
12
|
-
import { createLeadingDocDescriptionExtractor } from '../utils/ast-helpers.js';
|
|
12
|
+
import { createLeadingDocDescriptionExtractor, isCjsDefaultExportAssignment, isPrototypeMemberAssignmentNode, } from '../utils/ast-helpers.js';
|
|
13
|
+
import { cjsExportedNameFor, isModuleLevelThisAssignment, isModuleLevelThisExport, isShadowedCjsExportAssignmentNode, } from './typescript/cjs-export-assignment.js';
|
|
14
|
+
const rootOf = (node) => node.tree?.rootNode;
|
|
15
|
+
/** `exports.X = fn` where the module already declares `X` — see #2723. */
|
|
16
|
+
const isShadowedCjsExportNode = (node) => {
|
|
17
|
+
const root = rootOf(node);
|
|
18
|
+
return root !== undefined && isShadowedCjsExportAssignmentNode(node, root);
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Label for a `<receiver>.<member> = <function>` capture (#2723 follow-up).
|
|
22
|
+
*
|
|
23
|
+
* The member-assignment queries match ANY identifier receiver, because an
|
|
24
|
+
* `exports` alias (`const e = exports; e.foo = fn`) cannot be pinned in the
|
|
25
|
+
* query. Everything that is not a recognised shape is dropped HERE — without
|
|
26
|
+
* that, every `obj.handler = function () {}` in every JS/TS file would emit a
|
|
27
|
+
* spurious top-level `Function` named `handler`.
|
|
28
|
+
*
|
|
29
|
+
* Recognised: a CJS export (direct, `module.exports`, or via a module-scope
|
|
30
|
+
* alias) stays a Function; a prototype or `this` member becomes a Method; a
|
|
31
|
+
* CJS export shadowing a name the module already declares emits nothing.
|
|
32
|
+
*/
|
|
33
|
+
const memberAssignmentLabel = (node) => {
|
|
34
|
+
const root = rootOf(node);
|
|
35
|
+
// Module-level `this.X = fn` in CommonJS IS `module.exports.X = fn`, so it
|
|
36
|
+
// is an exported Function, not an instance member. Checked before the
|
|
37
|
+
// Method branch, which would otherwise claim every `this` receiver.
|
|
38
|
+
if (root !== undefined && isModuleLevelThisExport(node, root))
|
|
39
|
+
return 'Function';
|
|
40
|
+
// `module.exports = fn` — the module itself is the callable.
|
|
41
|
+
if (isCjsDefaultExportAssignment(node))
|
|
42
|
+
return 'Function';
|
|
43
|
+
// A module-level `this` member in ESM or a no-signal file is neither an
|
|
44
|
+
// export (top-level `this` is undefined) nor an instance member. Emitting a
|
|
45
|
+
// Method there minted an ownerless node (#2729 review F13).
|
|
46
|
+
if (isModuleLevelThisAssignment(node))
|
|
47
|
+
return null;
|
|
48
|
+
if (isPrototypeMemberAssignmentNode(node))
|
|
49
|
+
return 'Method';
|
|
50
|
+
if (isShadowedCjsExportNode(node))
|
|
51
|
+
return null;
|
|
52
|
+
const value = node.childForFieldName('right');
|
|
53
|
+
if (root === undefined || value === null)
|
|
54
|
+
return null;
|
|
55
|
+
return cjsExportedNameFor(value, root) !== null ? 'Function' : null;
|
|
56
|
+
};
|
|
13
57
|
import { createTypeScriptCfgVisitor } from '../cfg/visitors/typescript.js';
|
|
14
58
|
import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
|
|
15
59
|
import { tsExportChecker } from '../export-detection.js';
|
|
@@ -28,6 +72,15 @@ import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/
|
|
|
28
72
|
import { ARRAY_METHOD_HOC_BLOCKLIST_SET, DEFAULT_EXPORT_IDENTIFIER_BLOCKLIST_SET, deriveDefaultExportHocName, } from '../ts-js-hoc-utils.js';
|
|
29
73
|
import { emitTsScopeCaptures, interpretTsImport, interpretTsTypeBinding, tsBindingScopeFor, tsImportOwningScope, tsReceiverBinding, typescriptMergeBindings, typescriptArityCompatibility, resolveTsImportTarget, } from './typescript/index.js';
|
|
30
74
|
import { emitJsScopeCaptures, interpretJsImport, interpretJsTypeBinding, jsBindingScopeFor, jsImportOwningScope, jsReceiverBinding, jsMergeBindings, jsArityCompatibility, } from './javascript/index.js';
|
|
75
|
+
import { extractDispatchGuardRoutes } from '../route-extractors/dispatch-guard.js';
|
|
76
|
+
import { extractDataRouteTableRoutes } from '../route-extractors/data-route-table.js';
|
|
77
|
+
import { extractNestRoutes } from '../route-extractors/nest.js';
|
|
78
|
+
import { extractConvexEndpointProperties } from './typescript/convex-endpoint-metadata.js';
|
|
79
|
+
const extractJsTsRoutes = (...args) => [
|
|
80
|
+
...extractDispatchGuardRoutes(...args),
|
|
81
|
+
...extractDataRouteTableRoutes(...args),
|
|
82
|
+
...extractNestRoutes(...args),
|
|
83
|
+
];
|
|
31
84
|
/**
|
|
32
85
|
* TypeScript/JavaScript: arrow_function and function_expression are
|
|
33
86
|
* anonymous AST nodes — they take their name from the surrounding
|
|
@@ -250,6 +303,15 @@ export const BUILT_INS = new Set([
|
|
|
250
303
|
'toString',
|
|
251
304
|
'valueOf',
|
|
252
305
|
]);
|
|
306
|
+
/**
|
|
307
|
+
* `this` is the only receiver keyword JavaScript and TypeScript bind, and it
|
|
308
|
+
* is bound by every function form except an arrow (#2701). The query files
|
|
309
|
+
* tag those forms with `@receiver-owner.this`; this hook just reads the tag,
|
|
310
|
+
* so the node-type list stays in the one place that already names grammar
|
|
311
|
+
* nodes. See `Scope.ownsReceivers` for what the marker does to the walk.
|
|
312
|
+
*/
|
|
313
|
+
const TS_OWNED_RECEIVERS = new Set(['this']);
|
|
314
|
+
const tsScopeOwnsReceivers = (match) => match['@receiver-owner.this'] === undefined ? undefined : TS_OWNED_RECEIVERS;
|
|
253
315
|
export const typescriptProvider = defineLanguage({
|
|
254
316
|
id: SupportedLanguages.TypeScript,
|
|
255
317
|
extensions: ['.ts', '.tsx'],
|
|
@@ -278,6 +340,7 @@ export const typescriptProvider = defineLanguage({
|
|
|
278
340
|
],
|
|
279
341
|
treeSitterQueries: TYPESCRIPT_QUERIES,
|
|
280
342
|
typeConfig: typescriptConfig,
|
|
343
|
+
scopeOwnsReceivers: tsScopeOwnsReceivers,
|
|
281
344
|
exportChecker: tsExportChecker,
|
|
282
345
|
importResolver: createImportResolver(typescriptImportConfig),
|
|
283
346
|
callExtractor: createCallExtractor(typescriptCallConfig),
|
|
@@ -287,6 +350,7 @@ export const typescriptProvider = defineLanguage({
|
|
|
287
350
|
extractFunctionName: tsExtractFunctionName,
|
|
288
351
|
}),
|
|
289
352
|
variableExtractor: createVariableExtractor(typescriptVariableConfig),
|
|
353
|
+
definitionPropertiesExtractor: extractConvexEndpointProperties,
|
|
290
354
|
classExtractor: createClassExtractor(typescriptClassConfig),
|
|
291
355
|
// ── JSDoc → description (issue #2270). An exported decl is captured as the
|
|
292
356
|
// inner declaration; its JSDoc precedes the wrapping `export_statement`. ──
|
|
@@ -294,6 +358,19 @@ export const typescriptProvider = defineLanguage({
|
|
|
294
358
|
wrapperNodeTypes: ['export_statement'],
|
|
295
359
|
}),
|
|
296
360
|
builtInNames: BUILT_INS,
|
|
361
|
+
// Member-assignment shapes are not free functions (#2723 follow-up). The
|
|
362
|
+
// capture arrives anchored on the assignment, so the shape is decided from
|
|
363
|
+
// the left-hand side:
|
|
364
|
+
// - `Foo.prototype.bar = fn` / `this.bar = fn` -> a Method
|
|
365
|
+
// - a CJS export shadowing a name the module already declares -> no node
|
|
366
|
+
// at all, since the scope declaration that would reach it is suppressed
|
|
367
|
+
// too (an orphan `Function` twin beside `class Dup {}` otherwise).
|
|
368
|
+
// Every other `definition.function` capture keeps its default label.
|
|
369
|
+
labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
|
|
370
|
+
? defaultLabel
|
|
371
|
+
: functionNode.type === 'assignment_expression'
|
|
372
|
+
? memberAssignmentLabel(functionNode)
|
|
373
|
+
: defaultLabel,
|
|
297
374
|
// ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
|
|
298
375
|
// TypeScript is the third migration after Python and C#. See
|
|
299
376
|
// ./typescript/index.ts for the full per-hook rationale and the
|
|
@@ -314,10 +391,14 @@ export const typescriptProvider = defineLanguage({
|
|
|
314
391
|
receiverBinding: tsReceiverBinding,
|
|
315
392
|
arityCompatibility: typescriptArityCompatibility,
|
|
316
393
|
resolveImportTarget: resolveTsImportTarget,
|
|
394
|
+
// A raw `node:http` server declares its routes by comparing the request path
|
|
395
|
+
// to a literal; nothing else in this pipeline can see that shape. TS and JS
|
|
396
|
+
// share the grammar, so they share the extractor.
|
|
397
|
+
extractDecoratorRoutes: extractJsTsRoutes,
|
|
317
398
|
});
|
|
318
399
|
export const javascriptProvider = defineLanguage({
|
|
319
400
|
id: SupportedLanguages.JavaScript,
|
|
320
|
-
extensions: ['.js', '.jsx'],
|
|
401
|
+
extensions: ['.js', '.jsx', '.mjs', '.cjs'],
|
|
321
402
|
entryPointPatterns: [/^use[A-Z]/],
|
|
322
403
|
astFrameworkPatterns: [
|
|
323
404
|
{
|
|
@@ -343,6 +424,7 @@ export const javascriptProvider = defineLanguage({
|
|
|
343
424
|
],
|
|
344
425
|
treeSitterQueries: JAVASCRIPT_QUERIES,
|
|
345
426
|
typeConfig: typescriptConfig,
|
|
427
|
+
scopeOwnsReceivers: tsScopeOwnsReceivers,
|
|
346
428
|
exportChecker: tsExportChecker,
|
|
347
429
|
importResolver: createImportResolver(javascriptImportConfig),
|
|
348
430
|
callExtractor: createCallExtractor(javascriptCallConfig),
|
|
@@ -352,6 +434,7 @@ export const javascriptProvider = defineLanguage({
|
|
|
352
434
|
extractFunctionName: tsExtractFunctionName,
|
|
353
435
|
}),
|
|
354
436
|
variableExtractor: createVariableExtractor(javascriptVariableConfig),
|
|
437
|
+
definitionPropertiesExtractor: extractConvexEndpointProperties,
|
|
355
438
|
classExtractor: createClassExtractor(javascriptClassConfig),
|
|
356
439
|
// ── JSDoc → description (issue #2270). An exported decl is captured as the
|
|
357
440
|
// inner declaration; its JSDoc precedes the wrapping `export_statement`. ──
|
|
@@ -359,6 +442,12 @@ export const javascriptProvider = defineLanguage({
|
|
|
359
442
|
wrapperNodeTypes: ['export_statement'],
|
|
360
443
|
}),
|
|
361
444
|
builtInNames: BUILT_INS,
|
|
445
|
+
// Member-assignment shapes — see the TypeScript provider above.
|
|
446
|
+
labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
|
|
447
|
+
? defaultLabel
|
|
448
|
+
: functionNode.type === 'assignment_expression'
|
|
449
|
+
? memberAssignmentLabel(functionNode)
|
|
450
|
+
: defaultLabel,
|
|
362
451
|
// ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
|
|
363
452
|
// JavaScript is the fourth migration after Python, C#, and TypeScript.
|
|
364
453
|
// Hooks are thin wrappers over the TypeScript implementations where
|
|
@@ -375,4 +464,6 @@ export const javascriptProvider = defineLanguage({
|
|
|
375
464
|
mergeBindings: (_scope, bindings) => jsMergeBindings(bindings),
|
|
376
465
|
receiverBinding: jsReceiverBinding,
|
|
377
466
|
arityCompatibility: jsArityCompatibility,
|
|
467
|
+
// See the TypeScript provider above.
|
|
468
|
+
extractDecoratorRoutes: extractJsTsRoutes,
|
|
378
469
|
});
|
|
@@ -1,27 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
|
|
10
|
-
*
|
|
11
|
-
* `.vue` imports are written with explicit extensions (`'./Button.vue'`),
|
|
12
|
-
* so no Vue-specific suffix guessing is required: the standard
|
|
13
|
-
* resolver finds them via the exact-path branch before any extension
|
|
14
|
-
* logic fires.
|
|
15
|
-
*
|
|
16
|
-
* Memoization mirrors the TypeScript adapter: workspace file-list
|
|
17
|
-
* arrays, the suffix index, and the per-pass resolve cache are rebuilt
|
|
18
|
-
* lazily when `allFilePaths` reference changes (once per workspace pass).
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Build a memoized `resolveImportTarget` adapter for Vue SFCs.
|
|
22
|
-
*
|
|
23
|
-
* Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
|
|
24
|
-
* and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
|
|
25
|
-
* imports inside `<script>` blocks.
|
|
4
|
+
* `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
|
|
5
|
+
* resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
|
|
6
|
+
* same `package.json` manifests. `.vue` imports are written with an explicit
|
|
7
|
+
* extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
|
|
8
|
+
* Vue-specific guessing is required — the exact-path branch finds them first.
|
|
26
9
|
*/
|
|
10
|
+
/** Build the Vue `resolveImportTarget` adapter. */
|
|
27
11
|
export declare function makeVueResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
|
|
@@ -1,58 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
|
|
10
|
-
*
|
|
11
|
-
* `.vue` imports are written with explicit extensions (`'./Button.vue'`),
|
|
12
|
-
* so no Vue-specific suffix guessing is required: the standard
|
|
13
|
-
* resolver finds them via the exact-path branch before any extension
|
|
14
|
-
* logic fires.
|
|
15
|
-
*
|
|
16
|
-
* Memoization mirrors the TypeScript adapter: workspace file-list
|
|
17
|
-
* arrays, the suffix index, and the per-pass resolve cache are rebuilt
|
|
18
|
-
* lazily when `allFilePaths` reference changes (once per workspace pass).
|
|
4
|
+
* `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
|
|
5
|
+
* resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
|
|
6
|
+
* same `package.json` manifests. `.vue` imports are written with an explicit
|
|
7
|
+
* extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
|
|
8
|
+
* Vue-specific guessing is required — the exact-path branch finds them first.
|
|
19
9
|
*/
|
|
20
|
-
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
21
10
|
import { resolveTsTarget } from '../typescript/import-target.js';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Build a memoized `resolveImportTarget` adapter for Vue SFCs.
|
|
25
|
-
*
|
|
26
|
-
* Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
|
|
27
|
-
* and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
|
|
28
|
-
* imports inside `<script>` blocks.
|
|
29
|
-
*/
|
|
11
|
+
/** Build the Vue `resolveImportTarget` adapter. */
|
|
30
12
|
export function makeVueResolveImportTarget() {
|
|
31
|
-
let cached = null;
|
|
32
13
|
return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
33
|
-
if (cached === null || cached.key !== allFilePaths) {
|
|
34
|
-
const allFileList = Array.from(allFilePaths);
|
|
35
|
-
const normalizedFileList = allFileList.map((f) => f.toLowerCase());
|
|
36
|
-
cached = {
|
|
37
|
-
key: allFilePaths,
|
|
38
|
-
allFilePaths: new Set(allFilePaths),
|
|
39
|
-
allFileList,
|
|
40
|
-
normalizedFileList,
|
|
41
|
-
index: buildSuffixIndex(normalizedFileList, allFileList),
|
|
42
|
-
resolveCache: new Map(),
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
14
|
const cfg = resolutionConfig;
|
|
46
|
-
|
|
15
|
+
return resolveTsTarget(targetRaw, {
|
|
47
16
|
fromFile,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
index: cached.index,
|
|
53
|
-
resolveCache: cached.resolveCache,
|
|
54
|
-
tsconfigPaths: cfg?.tsconfigPaths ?? null,
|
|
55
|
-
};
|
|
56
|
-
return resolveTsTarget(targetRaw, ws);
|
|
17
|
+
allFilePaths,
|
|
18
|
+
tsconfigs: cfg?.tsconfigs ?? null,
|
|
19
|
+
nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
|
|
20
|
+
});
|
|
57
21
|
};
|
|
58
22
|
}
|
|
@@ -56,7 +56,8 @@ import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js
|
|
|
56
56
|
import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
|
|
57
57
|
import { simpleKey } from '../../scope-resolution/graph-bridge/node-lookup.js';
|
|
58
58
|
import { vueProvider } from '../vue.js';
|
|
59
|
-
import {
|
|
59
|
+
import { loadTsconfigIndex } from '../typescript/tsconfig.js';
|
|
60
|
+
import { loadNodeWorkspacePackages } from '../../import-resolvers/node-workspace-packages.js';
|
|
60
61
|
import { typescriptArityCompatibility, typescriptMergeBindings } from '../typescript/index.js';
|
|
61
62
|
import { makeVueResolveImportTarget } from './import-target.js';
|
|
62
63
|
import { extractVueTemplateEdgeData } from '../../vue-sfc-extractor.js';
|
|
@@ -79,7 +80,8 @@ const vueScopeResolver = {
|
|
|
79
80
|
// Vue projects universally use TypeScript — load tsconfig so path
|
|
80
81
|
// aliases (`@/`, `~/`, `#/`) resolve through the standard branch.
|
|
81
82
|
loadResolutionConfig: async (repoPath) => ({
|
|
82
|
-
|
|
83
|
+
tsconfigs: await loadTsconfigIndex(repoPath),
|
|
84
|
+
nodeWorkspacePackages: await loadNodeWorkspacePackages(repoPath),
|
|
83
85
|
}),
|
|
84
86
|
// TypeScript LEGB semantics apply inside `<script>` / `<script setup>`.
|
|
85
87
|
mergeBindings: (existing, incoming) => [...typescriptMergeBindings([...existing, ...incoming])],
|
|
@@ -16,10 +16,10 @@ const isLocalValueCandidate = (node) => {
|
|
|
16
16
|
// True when `rel` is the structural `File -> DEFINES -> candidate` edge. Callers
|
|
17
17
|
// guard on the candidate already being the edge target, so only the source label
|
|
18
18
|
// needs checking here.
|
|
19
|
-
const isFileDefinesEdge = (graph,
|
|
20
|
-
if (
|
|
19
|
+
const isFileDefinesEdge = (graph, type, sourceId) => {
|
|
20
|
+
if (type !== 'DEFINES')
|
|
21
21
|
return false;
|
|
22
|
-
return graph.getNode(
|
|
22
|
+
return graph.getNode(sourceId)?.label === 'File';
|
|
23
23
|
};
|
|
24
24
|
export const pruneLocalValueSymbols = (graph, options = {}) => {
|
|
25
25
|
if (options.keepLocalValueSymbols ?? shouldKeepLocalValueSymbols()) {
|
|
@@ -33,20 +33,20 @@ export const pruneLocalValueSymbols = (graph, options = {}) => {
|
|
|
33
33
|
if (candidateIds.size === 0)
|
|
34
34
|
return emptyStats(false);
|
|
35
35
|
const candidatesWithSemanticEdges = new Set();
|
|
36
|
-
|
|
36
|
+
// Field-wise scan (#2680): a whole-graph walk that reads only these three, so
|
|
37
|
+
// materializing a relationship object per edge would be pure overhead.
|
|
38
|
+
graph.forEachRelationshipFields((sourceId, targetId, type) => {
|
|
37
39
|
// Any outgoing edge from a candidate is a semantic edge: the only structural
|
|
38
40
|
// edge a block-local value symbol carries is the incoming File -> DEFINES, on
|
|
39
41
|
// which the candidate is the target, never the source.
|
|
40
|
-
if (candidateIds.has(
|
|
41
|
-
candidatesWithSemanticEdges.add(
|
|
42
|
+
if (candidateIds.has(sourceId)) {
|
|
43
|
+
candidatesWithSemanticEdges.add(sourceId);
|
|
42
44
|
}
|
|
43
45
|
// An incoming edge is semantic unless it is the structural File -> DEFINES.
|
|
44
|
-
if (candidateIds.has(
|
|
45
|
-
|
|
46
|
-
candidatesWithSemanticEdges.add(rel.targetId);
|
|
47
|
-
}
|
|
46
|
+
if (candidateIds.has(targetId) && !isFileDefinesEdge(graph, type, sourceId)) {
|
|
47
|
+
candidatesWithSemanticEdges.add(targetId);
|
|
48
48
|
}
|
|
49
|
-
}
|
|
49
|
+
});
|
|
50
50
|
let prunedNodes = 0;
|
|
51
51
|
for (const candidateId of candidateIds) {
|
|
52
52
|
if (candidatesWithSemanticEdges.has(candidateId))
|
|
@@ -282,6 +282,7 @@ export const csharpMethodConfig = {
|
|
|
282
282
|
annotations: [], // C# has no syntax for attributes on primary constructors
|
|
283
283
|
sourceFile: context.filePath,
|
|
284
284
|
line: paramList.startPosition.row + 1,
|
|
285
|
+
column: paramList.startPosition.column,
|
|
285
286
|
};
|
|
286
287
|
},
|
|
287
288
|
};
|
|
@@ -31,6 +31,22 @@ export interface MethodInfo {
|
|
|
31
31
|
annotations: string[];
|
|
32
32
|
sourceFile: string;
|
|
33
33
|
line: number;
|
|
34
|
+
/**
|
|
35
|
+
* 0-based `startPosition.column` of the node `line` was derived from.
|
|
36
|
+
*
|
|
37
|
+
* `line` alone does NOT identify a callable. A callable that is SYNTHESIZED
|
|
38
|
+
* at a position that is not its own declaration shares its owner's line: a
|
|
39
|
+
* Java record's implicit component accessor is minted at the COMPONENT, and a
|
|
40
|
+
* C# 12 primary constructor at the owner's `parameter_list`. So both
|
|
41
|
+
* `record P(int x, int y) { int x(int s) {…} }` and
|
|
42
|
+
* `class Point(int x, int y) { public Point(int x) : this(x, 0) {} }` give two
|
|
43
|
+
* different callables the same (name, line) (#2936).
|
|
44
|
+
*
|
|
45
|
+
* Required, not optional: the per-class map in parse-worker keys on it, and
|
|
46
|
+
* an absent column would key an entry no lookup could ever reach — a silent,
|
|
47
|
+
* whole-language loss of method enrichment rather than a compile error.
|
|
48
|
+
*/
|
|
49
|
+
column: number;
|
|
34
50
|
}
|
|
35
51
|
export interface MethodExtractorContext {
|
|
36
52
|
filePath: string;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Framework-neutral dependency-injection resolution. Per-language resolvers
|
|
5
5
|
* identify injection sites and provider metadata; this phase performs only
|
|
6
|
-
* graph-level type/heritage resolution and emits
|
|
6
|
+
* graph-level type/heritage resolution and emits owner/site -> provider INJECTS edges.
|
|
7
7
|
*
|
|
8
8
|
* @deps mro
|
|
9
9
|
* @reads graph (Class/Interface/member nodes and heritage/ownership edges)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Framework-neutral dependency-injection resolution. Per-language resolvers
|
|
5
5
|
* identify injection sites and provider metadata; this phase performs only
|
|
6
|
-
* graph-level type/heritage resolution and emits
|
|
6
|
+
* graph-level type/heritage resolution and emits owner/site -> provider INJECTS edges.
|
|
7
7
|
*
|
|
8
8
|
* @deps mro
|
|
9
9
|
* @reads graph (Class/Interface/member nodes and heritage/ownership edges)
|
|
@@ -13,6 +13,16 @@ import { DI_RESOLVERS, isSupportedLanguage, } from '../di-extractors/index.js';
|
|
|
13
13
|
import { isDev } from '../utils/env.js';
|
|
14
14
|
import { logger } from '../../logger.js';
|
|
15
15
|
const AMBIGUOUS = Symbol('ambiguous');
|
|
16
|
+
function addProvidedType(index, language, typeName, providerId) {
|
|
17
|
+
const byName = index.get(language) ?? new Map();
|
|
18
|
+
const names = new Set([typeName, typeName.slice(typeName.lastIndexOf('.') + 1)]);
|
|
19
|
+
for (const name of names) {
|
|
20
|
+
const providers = byName.get(name) ?? new Set();
|
|
21
|
+
providers.add(providerId);
|
|
22
|
+
byName.set(name, providers);
|
|
23
|
+
}
|
|
24
|
+
index.set(language, byName);
|
|
25
|
+
}
|
|
16
26
|
function emptyNameIndex() {
|
|
17
27
|
return { byQualifiedName: new Map(), bySimpleName: new Map() };
|
|
18
28
|
}
|
|
@@ -50,6 +60,10 @@ export const diPhase = {
|
|
|
50
60
|
});
|
|
51
61
|
const candidates = [];
|
|
52
62
|
const providers = new Map();
|
|
63
|
+
const providedTypes = new Map();
|
|
64
|
+
const providerNames = new Map();
|
|
65
|
+
const providerNodes = new Map();
|
|
66
|
+
const providersByDeclarer = new Map();
|
|
53
67
|
ctx.graph.forEachNode((node) => {
|
|
54
68
|
const language = node.properties.language;
|
|
55
69
|
if (language === undefined || !isSupportedLanguage(language))
|
|
@@ -58,8 +72,25 @@ export const diPhase = {
|
|
|
58
72
|
if (resolver === undefined)
|
|
59
73
|
return;
|
|
60
74
|
const provider = resolver.matchProvider(node);
|
|
61
|
-
if (provider !== null)
|
|
75
|
+
if (provider !== null) {
|
|
62
76
|
providers.set(node.id, provider);
|
|
77
|
+
providerNodes.set(node.id, node);
|
|
78
|
+
const namesByLanguage = providerNames.get(language) ?? new Map();
|
|
79
|
+
for (const name of provider.names) {
|
|
80
|
+
const namedProviders = namesByLanguage.get(name) ?? new Set();
|
|
81
|
+
namedProviders.add(node.id);
|
|
82
|
+
namesByLanguage.set(name, namedProviders);
|
|
83
|
+
}
|
|
84
|
+
providerNames.set(language, namesByLanguage);
|
|
85
|
+
if (provider.providedTypeName !== undefined) {
|
|
86
|
+
addProvidedType(providedTypes, language, provider.providedTypeName, node.id);
|
|
87
|
+
}
|
|
88
|
+
if (provider.declaredByNodeId !== undefined) {
|
|
89
|
+
const declared = providersByDeclarer.get(provider.declaredByNodeId) ?? new Set();
|
|
90
|
+
declared.add(node.id);
|
|
91
|
+
providersByDeclarer.set(provider.declaredByNodeId, declared);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
63
94
|
for (const match of resolver.matchInjectionSites(node)) {
|
|
64
95
|
candidates.push({ ...match, siteNodeId: node.id, language });
|
|
65
96
|
}
|
|
@@ -73,10 +104,19 @@ export const diPhase = {
|
|
|
73
104
|
};
|
|
74
105
|
}
|
|
75
106
|
const interfaceToImplementers = new Map();
|
|
107
|
+
const directSupertypes = new Map();
|
|
76
108
|
for (const rel of ctx.graph.iterRelationshipsByType('IMPLEMENTS')) {
|
|
77
109
|
const set = interfaceToImplementers.get(rel.targetId) ?? new Set();
|
|
78
110
|
set.add(rel.sourceId);
|
|
79
111
|
interfaceToImplementers.set(rel.targetId, set);
|
|
112
|
+
const supertypes = directSupertypes.get(rel.sourceId) ?? new Set();
|
|
113
|
+
supertypes.add(rel.targetId);
|
|
114
|
+
directSupertypes.set(rel.sourceId, supertypes);
|
|
115
|
+
}
|
|
116
|
+
for (const rel of ctx.graph.iterRelationshipsByType('EXTENDS')) {
|
|
117
|
+
const supertypes = directSupertypes.get(rel.sourceId) ?? new Set();
|
|
118
|
+
supertypes.add(rel.targetId);
|
|
119
|
+
directSupertypes.set(rel.sourceId, supertypes);
|
|
80
120
|
}
|
|
81
121
|
const memberToClass = new Map();
|
|
82
122
|
for (const relationType of ['HAS_PROPERTY', 'HAS_METHOD']) {
|
|
@@ -87,7 +127,6 @@ export const diPhase = {
|
|
|
87
127
|
const candidateLanguages = new Set(candidates.map((candidate) => candidate.language));
|
|
88
128
|
const interfacesByLanguage = new Map();
|
|
89
129
|
const classesByLanguage = new Map();
|
|
90
|
-
const classNodes = new Map();
|
|
91
130
|
ctx.graph.forEachNode((node) => {
|
|
92
131
|
if (node.label !== 'Class' && node.label !== 'Interface')
|
|
93
132
|
return;
|
|
@@ -99,8 +138,62 @@ export const diPhase = {
|
|
|
99
138
|
addIndexedName(index, node);
|
|
100
139
|
indexes.set(language, index);
|
|
101
140
|
if (node.label === 'Class')
|
|
102
|
-
|
|
141
|
+
providerNodes.set(node.id, node);
|
|
103
142
|
});
|
|
143
|
+
// A declaration returning a concrete class is assignable to every class or
|
|
144
|
+
// interface that type extends/implements. Expand once per language+type and
|
|
145
|
+
// register the declaration under those ancestor names. This keeps named
|
|
146
|
+
// selection fast (set intersection below) while allowing, for example, a
|
|
147
|
+
// `DefaultGateway` Bean to satisfy a named `Gateway` Resource site.
|
|
148
|
+
const assignableNamesByProvidedType = new Map();
|
|
149
|
+
for (const [providerId, provider] of providers) {
|
|
150
|
+
if (provider.providedTypeName === undefined)
|
|
151
|
+
continue;
|
|
152
|
+
const providerNode = providerNodes.get(providerId);
|
|
153
|
+
const language = providerNode?.properties.language;
|
|
154
|
+
if (typeof language !== 'string')
|
|
155
|
+
continue;
|
|
156
|
+
const cacheKey = `${language}\0${provider.providedTypeName}`;
|
|
157
|
+
let assignableTypeNames = assignableNamesByProvidedType.get(cacheKey);
|
|
158
|
+
if (assignableTypeNames === undefined) {
|
|
159
|
+
const classEntry = resolveIndexedName(classesByLanguage.get(language), provider.providedTypeName);
|
|
160
|
+
const interfaceEntry = resolveIndexedName(interfacesByLanguage.get(language), provider.providedTypeName);
|
|
161
|
+
const rootTypeId = typeof classEntry === 'string' && interfaceEntry === undefined
|
|
162
|
+
? classEntry
|
|
163
|
+
: typeof interfaceEntry === 'string' && classEntry === undefined
|
|
164
|
+
? interfaceEntry
|
|
165
|
+
: undefined;
|
|
166
|
+
const names = new Set();
|
|
167
|
+
if (rootTypeId !== undefined) {
|
|
168
|
+
const queue = [rootTypeId];
|
|
169
|
+
const visited = new Set();
|
|
170
|
+
while (queue.length > 0) {
|
|
171
|
+
const typeId = queue.pop();
|
|
172
|
+
if (typeId === undefined)
|
|
173
|
+
continue;
|
|
174
|
+
if (visited.has(typeId))
|
|
175
|
+
continue;
|
|
176
|
+
visited.add(typeId);
|
|
177
|
+
const typeNode = ctx.graph.getNode(typeId);
|
|
178
|
+
if ((typeNode?.label === 'Class' || typeNode?.label === 'Interface') &&
|
|
179
|
+
typeNode.properties.language === language) {
|
|
180
|
+
names.add(typeNode.properties.name);
|
|
181
|
+
const qualifiedName = typeNode.properties.qualifiedName;
|
|
182
|
+
if (typeof qualifiedName === 'string')
|
|
183
|
+
names.add(qualifiedName);
|
|
184
|
+
}
|
|
185
|
+
for (const supertypeId of directSupertypes.get(typeId) ?? []) {
|
|
186
|
+
queue.push(supertypeId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
assignableTypeNames = [...names];
|
|
191
|
+
assignableNamesByProvidedType.set(cacheKey, assignableTypeNames);
|
|
192
|
+
}
|
|
193
|
+
for (const typeName of assignableTypeNames) {
|
|
194
|
+
addProvidedType(providedTypes, language, typeName, providerId);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
104
197
|
let ambiguousSkipped = 0;
|
|
105
198
|
let ambiguousInjections = 0;
|
|
106
199
|
const ambiguousTypeNames = new Set();
|
|
@@ -118,6 +211,7 @@ export const diPhase = {
|
|
|
118
211
|
const consumerClassId = siteNode?.label === 'Class' ? siteNode.id : memberToClass.get(candidate.siteNodeId);
|
|
119
212
|
if (consumerClassId === undefined)
|
|
120
213
|
continue;
|
|
214
|
+
const edgeSourceId = candidate.edgeSource === 'site' && siteNode !== undefined ? siteNode.id : consumerClassId;
|
|
121
215
|
const classEntry = resolveIndexedName(classesByLanguage.get(candidate.language), candidate.targetTypeName);
|
|
122
216
|
const interfaceEntry = resolveIndexedName(interfacesByLanguage.get(candidate.language), candidate.targetTypeName);
|
|
123
217
|
if (classEntry === AMBIGUOUS ||
|
|
@@ -140,36 +234,57 @@ export const diPhase = {
|
|
|
140
234
|
for (const id of interfaceToImplementers.get(interfaceEntry) ?? [])
|
|
141
235
|
structural.add(id);
|
|
142
236
|
}
|
|
237
|
+
for (const id of providedTypes.get(candidate.language)?.get(candidate.targetTypeName) ?? []) {
|
|
238
|
+
structural.add(id);
|
|
239
|
+
}
|
|
240
|
+
for (const id of providersByDeclarer.get(edgeSourceId) ?? [])
|
|
241
|
+
structural.delete(id);
|
|
143
242
|
structural.delete(consumerClassId);
|
|
243
|
+
structural.delete(edgeSourceId);
|
|
144
244
|
if (structural.size === 0)
|
|
145
245
|
continue;
|
|
146
|
-
let viable = providerCandidates(structural, providers);
|
|
147
246
|
const namedSelection = candidate.namedSelection;
|
|
247
|
+
let usedNamedSelection = false;
|
|
248
|
+
let selectionSuffix = '';
|
|
249
|
+
let viable;
|
|
148
250
|
if (namedSelection !== undefined) {
|
|
149
|
-
|
|
150
|
-
|
|
251
|
+
const named = [
|
|
252
|
+
...(providerNames.get(candidate.language)?.get(namedSelection.name) ?? []),
|
|
253
|
+
].filter((id) => structural.has(id));
|
|
254
|
+
if (named.length > 0) {
|
|
255
|
+
viable = named;
|
|
256
|
+
usedNamedSelection = true;
|
|
257
|
+
selectionSuffix = `; ${namedSelection.reason}`;
|
|
258
|
+
}
|
|
259
|
+
else if (namedSelection.fallbackToType === true) {
|
|
260
|
+
viable = providerCandidates(structural, providers);
|
|
261
|
+
selectionSuffix = `; ${namedSelection.reason} unmatched; type fallback`;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
151
264
|
continue;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
viable = providerCandidates(structural, providers);
|
|
152
269
|
}
|
|
153
270
|
if (candidate.cardinality === 'collection') {
|
|
154
|
-
const confidence =
|
|
155
|
-
const suffix = namedSelection === undefined ? '' : `; ${namedSelection.reason}`;
|
|
271
|
+
const confidence = usedNamedSelection ? 0.9 : 0.8;
|
|
156
272
|
for (const targetId of viable) {
|
|
157
273
|
queueEdge({
|
|
158
|
-
sourceId:
|
|
274
|
+
sourceId: edgeSourceId,
|
|
159
275
|
targetId,
|
|
160
276
|
confidence,
|
|
161
|
-
reason: candidate.reason +
|
|
277
|
+
reason: candidate.reason + selectionSuffix,
|
|
162
278
|
});
|
|
163
279
|
}
|
|
164
280
|
continue;
|
|
165
281
|
}
|
|
166
282
|
if (viable.length === 1) {
|
|
167
|
-
const suffix = namedSelection === undefined ? '' : `; ${namedSelection.reason}`;
|
|
168
283
|
queueEdge({
|
|
169
|
-
sourceId:
|
|
284
|
+
sourceId: edgeSourceId,
|
|
170
285
|
targetId: viable[0],
|
|
171
|
-
confidence: namedSelection === undefined ? 0.9 : 0.
|
|
172
|
-
reason: candidate.reason +
|
|
286
|
+
confidence: usedNamedSelection ? 0.95 : namedSelection === undefined ? 0.9 : 0.85,
|
|
287
|
+
reason: candidate.reason + selectionSuffix,
|
|
173
288
|
});
|
|
174
289
|
continue;
|
|
175
290
|
}
|
|
@@ -177,27 +292,27 @@ export const diPhase = {
|
|
|
177
292
|
const reason = providers.get(id)?.preferenceReason;
|
|
178
293
|
return reason === undefined ? [] : [{ id, reason }];
|
|
179
294
|
});
|
|
180
|
-
if (
|
|
295
|
+
if (!usedNamedSelection && preferred.length === 1) {
|
|
181
296
|
const selected = preferred[0];
|
|
182
297
|
queueEdge({
|
|
183
|
-
sourceId:
|
|
298
|
+
sourceId: edgeSourceId,
|
|
184
299
|
targetId: selected.id,
|
|
185
300
|
confidence: 0.95,
|
|
186
|
-
reason: `${candidate.reason}; ${selected.reason}`,
|
|
301
|
+
reason: `${candidate.reason}${selectionSuffix}; ${selected.reason}`,
|
|
187
302
|
});
|
|
188
303
|
continue;
|
|
189
304
|
}
|
|
190
305
|
ambiguousInjections++;
|
|
191
306
|
const candidateNames = viable
|
|
192
|
-
.map((id) =>
|
|
307
|
+
.map((id) => providerNodes.get(id)?.properties.name ?? id)
|
|
193
308
|
.sort()
|
|
194
309
|
.join(', ');
|
|
195
310
|
for (const targetId of viable) {
|
|
196
311
|
queueEdge({
|
|
197
|
-
sourceId:
|
|
312
|
+
sourceId: edgeSourceId,
|
|
198
313
|
targetId,
|
|
199
314
|
confidence: 0.5,
|
|
200
|
-
reason: `${candidate.reason}; ambiguous candidates: ${candidateNames}`,
|
|
315
|
+
reason: `${candidate.reason}${selectionSuffix}; ambiguous candidates: ${candidateNames}`,
|
|
201
316
|
});
|
|
202
317
|
}
|
|
203
318
|
}
|