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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { CaptureMatch, ParsedImport, ParsedTypeBinding } from '../../../../_shared/index.js';
|
|
2
2
|
export declare function interpretGoImport(captures: CaptureMatch): ParsedImport | null;
|
|
3
3
|
export declare function interpretGoTypeBinding(captures: CaptureMatch): ParsedTypeBinding | null;
|
|
4
|
+
/** `map[K]V` → `V`, trimmed. `undefined` when `text` is not a map spelling. */
|
|
5
|
+
export declare function goMapValueType(text: string): string | undefined;
|
|
4
6
|
export declare function normalizeGoTypeName(text: string): string;
|
|
5
7
|
/**
|
|
6
8
|
* Like `normalizeGoTypeName` but preserves dotted package-prefix
|
|
@@ -29,8 +29,12 @@ export function interpretGoTypeBinding(captures) {
|
|
|
29
29
|
if (captures['@type-binding.self'] !== undefined) {
|
|
30
30
|
source = 'self';
|
|
31
31
|
// Preserve pointer shape on receiver self-bindings (`*T` vs `T`).
|
|
32
|
-
// Method-owner enrichment consumes that raw shape to
|
|
33
|
-
//
|
|
32
|
+
// Method-owner enrichment consumes that raw shape to stamp `goReceiverKind`
|
|
33
|
+
// on each method. Since #2813 that stamp is metadata, NOT a filter:
|
|
34
|
+
// structural interface satisfaction counts pointer-receiver methods, because
|
|
35
|
+
// `*T`'s method set is what an interface-typed field actually holds. The
|
|
36
|
+
// preserved distinction is the hook a future value/pointer-aware model would
|
|
37
|
+
// read — do not reintroduce it as an exclusion.
|
|
34
38
|
normalizedType = type.trim();
|
|
35
39
|
}
|
|
36
40
|
else if (captures['@type-binding.constructor'] !== undefined) {
|
|
@@ -91,12 +95,22 @@ export function interpretGoTypeBinding(captures) {
|
|
|
91
95
|
}
|
|
92
96
|
return { boundName: name, rawTypeName: normalizedType, source };
|
|
93
97
|
}
|
|
98
|
+
/** Shallow `map[K]V` spelling match — the key is anything up to the first `]`,
|
|
99
|
+
* so a nested map key (`map[map[a]b]V`) is deliberately NOT recognised. Held
|
|
100
|
+
* in one place so the capture-side normalizers and the resolver's element-type
|
|
101
|
+
* hook cannot drift on what counts as a map spelling. */
|
|
102
|
+
const GO_MAP_VALUE_RE = /^map\[[^\]]+\]\s*(.+)$/;
|
|
103
|
+
/** `map[K]V` → `V`, trimmed. `undefined` when `text` is not a map spelling. */
|
|
104
|
+
export function goMapValueType(text) {
|
|
105
|
+
const match = GO_MAP_VALUE_RE.exec(text);
|
|
106
|
+
return match === null ? undefined : match[1].trim();
|
|
107
|
+
}
|
|
94
108
|
export function normalizeGoTypeName(text) {
|
|
95
109
|
let t = text.trim();
|
|
96
110
|
t = stripGoOuterTypePrefixes(t);
|
|
97
|
-
const
|
|
98
|
-
if (
|
|
99
|
-
t =
|
|
111
|
+
const mapValue = goMapValueType(t);
|
|
112
|
+
if (mapValue !== undefined)
|
|
113
|
+
t = mapValue;
|
|
100
114
|
t = stripGoOuterTypePrefixes(t.replace(/^(?:<-)?chan(?:<-)?\s+/, ''));
|
|
101
115
|
if (t.startsWith('func(')) {
|
|
102
116
|
const retMatch = t.match(/^func\([^)]*\)\s*(.*)$/);
|
|
@@ -126,9 +140,9 @@ export function normalizeGoReturnType(text) {
|
|
|
126
140
|
t = t.slice(1, closeIdx).trim();
|
|
127
141
|
}
|
|
128
142
|
t = stripGoOuterTypePrefixes(t);
|
|
129
|
-
const
|
|
130
|
-
if (
|
|
131
|
-
t =
|
|
143
|
+
const mapValue = goMapValueType(t);
|
|
144
|
+
if (mapValue !== undefined)
|
|
145
|
+
t = mapValue;
|
|
132
146
|
t = stripGoOuterTypePrefixes(t.replace(/^(?:<-)?chan(?:<-)?\s+/, ''));
|
|
133
147
|
if (t.startsWith('func(')) {
|
|
134
148
|
const retMatch = t.match(/^func\([^)]*\)\s*(.*)$/);
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { logger } from '../../../logger.js';
|
|
1
2
|
import { isClassLike, populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
|
|
3
|
+
import { goPackageDir, inferGoPackageName } from './package-clause.js';
|
|
4
|
+
import { stampGoInterfaceTypeParameters } from './generic-type-parameters.js';
|
|
5
|
+
/** Bound on the sample of no-package-clause paths named in the warning. */
|
|
6
|
+
const SKIPPED_SAMPLE_CAP = 5;
|
|
2
7
|
/**
|
|
3
8
|
* Populate `ownerId` on Go Method defs by matching receiver types
|
|
4
9
|
* extracted from `@type-binding.self` captures against struct defs in
|
|
@@ -19,16 +24,39 @@ export function populateGoOwners(parsed) {
|
|
|
19
24
|
populateGoOwnersInPackage([parsed]);
|
|
20
25
|
}
|
|
21
26
|
export function populateGoWorkspaceOwners(parsedFiles, ctx) {
|
|
27
|
+
// Generic interfaces get their type-parameter list stamped here rather than at
|
|
28
|
+
// capture time, because this is the first main-thread hook that sees BOTH the
|
|
29
|
+
// parsed scopes and the file text (it already reads `fileContents` for the
|
|
30
|
+
// package clause). `detectGoInterfaceImplementations` runs later in the same
|
|
31
|
+
// pass and is the only reader. See `stampGoInterfaceTypeParameters`.
|
|
32
|
+
stampGoInterfaceTypeParameters(parsedFiles, ctx.fileContents);
|
|
22
33
|
const filesByPackage = new Map();
|
|
34
|
+
// A file with no resolvable package clause is dropped from ownership
|
|
35
|
+
// resolution entirely — its methods never attach to a struct declared in a
|
|
36
|
+
// sibling file. That used to be a bare `continue` with no trace, which is the
|
|
37
|
+
// same false-safe silence #2813 was filed about. Report it once, bounded
|
|
38
|
+
// (mirrors the fan-out-cap warning in scope-resolution/pipeline/run.ts).
|
|
39
|
+
let skippedCount = 0;
|
|
40
|
+
const skippedSample = [];
|
|
23
41
|
for (const parsed of parsedFiles) {
|
|
24
|
-
const pkgName =
|
|
25
|
-
if (pkgName === null)
|
|
42
|
+
const pkgName = inferGoPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
|
|
43
|
+
if (pkgName === null) {
|
|
44
|
+
// Count everything, retain only the sample — a misrouted vendored tree
|
|
45
|
+
// would otherwise accumulate one path reference per file to print five.
|
|
46
|
+
skippedCount += 1;
|
|
47
|
+
if (skippedSample.length < SKIPPED_SAMPLE_CAP)
|
|
48
|
+
skippedSample.push(parsed.filePath);
|
|
26
49
|
continue;
|
|
27
|
-
|
|
50
|
+
}
|
|
51
|
+
const key = `${goPackageDir(parsed.filePath)}\0${pkgName}`;
|
|
28
52
|
const bucket = filesByPackage.get(key) ?? [];
|
|
29
53
|
bucket.push(parsed);
|
|
30
54
|
filesByPackage.set(key, bucket);
|
|
31
55
|
}
|
|
56
|
+
if (skippedCount > 0) {
|
|
57
|
+
logger.warn({ skippedFiles: skippedCount, sample: skippedSample }, 'go: files with no resolvable package clause were excluded from method-owner ' +
|
|
58
|
+
'resolution (their methods cannot attach to structs declared in sibling files)');
|
|
59
|
+
}
|
|
32
60
|
for (const bucket of filesByPackage.values()) {
|
|
33
61
|
populateGoOwnersInPackage(bucket);
|
|
34
62
|
}
|
|
@@ -97,12 +125,3 @@ function populateGoOwnersInPackage(parsedFiles) {
|
|
|
97
125
|
}
|
|
98
126
|
}
|
|
99
127
|
}
|
|
100
|
-
function inferPackageName(sourceText) {
|
|
101
|
-
const match = sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m);
|
|
102
|
-
return match?.[1] ?? null;
|
|
103
|
-
}
|
|
104
|
-
function packageDir(filePath) {
|
|
105
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
106
|
-
const idx = normalized.lastIndexOf('/');
|
|
107
|
-
return idx === -1 ? '' : normalized.slice(0, idx);
|
|
108
|
-
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go package-clause resolution — the single derivation of a file's package
|
|
3
|
+
* identity (#2837).
|
|
4
|
+
*
|
|
5
|
+
* Both Go passes that bucket files by package (`populateGoWorkspaceOwners` and
|
|
6
|
+
* `populateGoPackageSiblings`) previously carried their own byte-identical copy
|
|
7
|
+
* of this, spelled as one unanchored multiline regex:
|
|
8
|
+
*
|
|
9
|
+
* sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m)
|
|
10
|
+
*
|
|
11
|
+
* With the `m` flag that matches the first line ANYWHERE in the file starting
|
|
12
|
+
* with `package <ident>` — comment bodies included. Measured against that exact
|
|
13
|
+
* expression: a header comment containing `package legacy_notes kept for
|
|
14
|
+
* history` yields `legacy_notes`, and an indented ` package helper old name`
|
|
15
|
+
* yields `helper`. A file that mis-infers its own package gets a bucket key no
|
|
16
|
+
* sibling shares, so it is isolated in BOTH passes: its methods never attach to
|
|
17
|
+
* structs declared in sibling files, and it exchanges no same-package bindings.
|
|
18
|
+
* Every field-receiver call in it then resolves to nothing, silently — the same
|
|
19
|
+
* per-file signature #2837 reported.
|
|
20
|
+
*
|
|
21
|
+
* The Go spec makes the correct rule exact rather than heuristic: a source
|
|
22
|
+
* file's first non-comment, non-blank token is `package`. So skip the leading
|
|
23
|
+
* run of whitespace and comments, then require the very next token to be the
|
|
24
|
+
* clause. Anything else is `null` — a truncated read, a misrouted non-Go file,
|
|
25
|
+
* an unparseable header — reported by the caller rather than guessed at.
|
|
26
|
+
*
|
|
27
|
+
* ONE rule governs every leniency below (the `\s+` separator, the shebang skip,
|
|
28
|
+
* CR-only line endings): a file this returns `null` for is dropped from BOTH
|
|
29
|
+
* passes, so refusing a shape the previous regex accepted is a silent
|
|
30
|
+
* regression, not a principled tightening. Be no stricter than the grammar.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* The package name declared by this Go source text, or `null` when its first
|
|
34
|
+
* real token is not a package clause.
|
|
35
|
+
*
|
|
36
|
+
* Only the leading run before the clause is skipped — deliberately NOT a
|
|
37
|
+
* whole-file comment strip, which would be O(file) on every Go file and would
|
|
38
|
+
* also have to model string literals to stay correct.
|
|
39
|
+
*/
|
|
40
|
+
export declare function inferGoPackageName(sourceText: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* The directory half of a Go package key. Go package identity is
|
|
43
|
+
* directory-scoped, so repeated `package main` directories must not see each
|
|
44
|
+
* other's unqualified names.
|
|
45
|
+
*/
|
|
46
|
+
export declare function goPackageDir(filePath: string): string;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go package-clause resolution — the single derivation of a file's package
|
|
3
|
+
* identity (#2837).
|
|
4
|
+
*
|
|
5
|
+
* Both Go passes that bucket files by package (`populateGoWorkspaceOwners` and
|
|
6
|
+
* `populateGoPackageSiblings`) previously carried their own byte-identical copy
|
|
7
|
+
* of this, spelled as one unanchored multiline regex:
|
|
8
|
+
*
|
|
9
|
+
* sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m)
|
|
10
|
+
*
|
|
11
|
+
* With the `m` flag that matches the first line ANYWHERE in the file starting
|
|
12
|
+
* with `package <ident>` — comment bodies included. Measured against that exact
|
|
13
|
+
* expression: a header comment containing `package legacy_notes kept for
|
|
14
|
+
* history` yields `legacy_notes`, and an indented ` package helper old name`
|
|
15
|
+
* yields `helper`. A file that mis-infers its own package gets a bucket key no
|
|
16
|
+
* sibling shares, so it is isolated in BOTH passes: its methods never attach to
|
|
17
|
+
* structs declared in sibling files, and it exchanges no same-package bindings.
|
|
18
|
+
* Every field-receiver call in it then resolves to nothing, silently — the same
|
|
19
|
+
* per-file signature #2837 reported.
|
|
20
|
+
*
|
|
21
|
+
* The Go spec makes the correct rule exact rather than heuristic: a source
|
|
22
|
+
* file's first non-comment, non-blank token is `package`. So skip the leading
|
|
23
|
+
* run of whitespace and comments, then require the very next token to be the
|
|
24
|
+
* clause. Anything else is `null` — a truncated read, a misrouted non-Go file,
|
|
25
|
+
* an unparseable header — reported by the caller rather than guessed at.
|
|
26
|
+
*
|
|
27
|
+
* ONE rule governs every leniency below (the `\s+` separator, the shebang skip,
|
|
28
|
+
* CR-only line endings): a file this returns `null` for is dropped from BOTH
|
|
29
|
+
* passes, so refusing a shape the previous regex accepted is a silent
|
|
30
|
+
* regression, not a principled tightening. Be no stricter than the grammar.
|
|
31
|
+
*/
|
|
32
|
+
/** Leading trivia: whitespace, `//` lines, block comments. Sticky. */
|
|
33
|
+
const LEADING_TRIVIA = /(?:\s+|\/\/[^\n\r]*|\/\*[\s\S]*?\*\/)*/y;
|
|
34
|
+
/** The clause itself, anchored at the first non-trivia byte. `\s+` (not
|
|
35
|
+
* `[ \t]+`) because Go separates tokens by any whitespace: `package\nmain` is
|
|
36
|
+
* legal and tree-sitter parses it without error. */
|
|
37
|
+
const PACKAGE_CLAUSE = /package\s+([A-Za-z_][A-Za-z0-9_]*)/y;
|
|
38
|
+
/**
|
|
39
|
+
* The package name declared by this Go source text, or `null` when its first
|
|
40
|
+
* real token is not a package clause.
|
|
41
|
+
*
|
|
42
|
+
* Only the leading run before the clause is skipped — deliberately NOT a
|
|
43
|
+
* whole-file comment strip, which would be O(file) on every Go file and would
|
|
44
|
+
* also have to model string literals to stay correct.
|
|
45
|
+
*/
|
|
46
|
+
export function inferGoPackageName(sourceText) {
|
|
47
|
+
let i = 0;
|
|
48
|
+
// A leading `#!` line: `gorun`-style scripts carry one. Only a FIRST-line
|
|
49
|
+
// `#!` is skipped; a `#` anywhere else still ends the scan.
|
|
50
|
+
if (sourceText.startsWith('#!')) {
|
|
51
|
+
const eol = sourceText.search(/[\n\r]/);
|
|
52
|
+
if (eol === -1)
|
|
53
|
+
return null;
|
|
54
|
+
i = eol + 1;
|
|
55
|
+
}
|
|
56
|
+
// Whitespace (`\s` covers the BOM and every line ending), `//` lines and block
|
|
57
|
+
// comments — the run a Go file may carry before its clause. Sticky, so the
|
|
58
|
+
// header is skipped in place without slicing a copy of the file. An
|
|
59
|
+
// unterminated `/*` or a `//` running to EOF simply leaves `lastIndex` where
|
|
60
|
+
// the clause cannot match, so neither needs its own early return.
|
|
61
|
+
LEADING_TRIVIA.lastIndex = i;
|
|
62
|
+
LEADING_TRIVIA.exec(sourceText);
|
|
63
|
+
PACKAGE_CLAUSE.lastIndex = LEADING_TRIVIA.lastIndex;
|
|
64
|
+
return PACKAGE_CLAUSE.exec(sourceText)?.[1] ?? null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The directory half of a Go package key. Go package identity is
|
|
68
|
+
* directory-scoped, so repeated `package main` directories must not see each
|
|
69
|
+
* other's unqualified names.
|
|
70
|
+
*/
|
|
71
|
+
export function goPackageDir(filePath) {
|
|
72
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
73
|
+
const idx = normalized.lastIndexOf('/');
|
|
74
|
+
return idx === -1 ? '' : normalized.slice(0, idx);
|
|
75
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { expandGoDotImports } from './expand-wildcards.js';
|
|
2
|
+
import { goPackageDir, inferGoPackageName } from './package-clause.js';
|
|
2
3
|
/**
|
|
3
4
|
* O(n²×d) where n = files per package, d = defs per file.
|
|
4
5
|
* Acceptable for V1 since Go packages are typically small (< 20 files).
|
|
@@ -17,9 +18,13 @@ export function populateGoPackageSiblings(parsedFiles, indexes, ctx) {
|
|
|
17
18
|
// must not see each other's unqualified names.
|
|
18
19
|
const packageByFile = new Map();
|
|
19
20
|
for (const parsed of nonTestFiles) {
|
|
20
|
-
|
|
21
|
+
// Same derivation as `populateGoWorkspaceOwners` — one shared resolver, so
|
|
22
|
+
// the two passes cannot disagree about a file's package (#2837). The
|
|
23
|
+
// no-clause case is reported there; warning twice for one fact would be
|
|
24
|
+
// noise.
|
|
25
|
+
const pkgName = inferGoPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
|
|
21
26
|
if (pkgName !== null) {
|
|
22
|
-
packageByFile.set(parsed.filePath, `${
|
|
27
|
+
packageByFile.set(parsed.filePath, `${goPackageDir(parsed.filePath)}\0${pkgName}`);
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
30
|
const filesByPackage = new Map();
|
|
@@ -60,15 +65,6 @@ export function populateGoPackageSiblings(parsedFiles, indexes, ctx) {
|
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
|
-
function inferPackageName(sourceText) {
|
|
64
|
-
const match = sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m);
|
|
65
|
-
return match?.[1] ?? null;
|
|
66
|
-
}
|
|
67
|
-
function packageDir(filePath) {
|
|
68
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
69
|
-
const idx = normalized.lastIndexOf('/');
|
|
70
|
-
return idx === -1 ? '' : normalized.slice(0, idx);
|
|
71
|
-
}
|
|
72
68
|
function getAugmentationBucket(augmentations, scopeId, name) {
|
|
73
69
|
let scopeBindings = augmentations.get(scopeId);
|
|
74
70
|
if (scopeBindings === undefined) {
|
|
@@ -3,9 +3,33 @@ import Go from 'tree-sitter-go';
|
|
|
3
3
|
const GO_SCOPE_QUERY = `
|
|
4
4
|
;; Scopes
|
|
5
5
|
(source_file) @scope.module
|
|
6
|
+
;; One Class scope per DECLARED TYPE, not per declaration (#2837).
|
|
7
|
+
;;
|
|
8
|
+
;; Capturing the type_declaration made a grouped declaration
|
|
9
|
+
;; type (
|
|
10
|
+
;; Decoy struct { ... }
|
|
11
|
+
;; PickService struct { ... }
|
|
12
|
+
;; )
|
|
13
|
+
;; a SINGLE Class scope owning every struct in the block. Downstream that scope
|
|
14
|
+
;; can name only one owner -- buildWorkspaceResolutionIndex keeps the first
|
|
15
|
+
;; class-like def it finds -- so the block's structs lost their field type
|
|
16
|
+
;; bindings, typeOfMemberOnClass found no scope, the compound-receiver fold
|
|
17
|
+
;; declined, and every s.field.Method() site in the file emitted nothing at
|
|
18
|
+
;; all. Silent, per-file, and independent of file size: exactly the split
|
|
19
|
+
;; reported in #2837 that #2829's global fixes could not explain. Measured on
|
|
20
|
+
;; the go-grouped-type-decl fixture: EVERY struct in a grouped block lost its
|
|
21
|
+
;; edges, the first one included, and grouped interface blocks produced no
|
|
22
|
+
;; IMPLEMENTS edges at all.
|
|
23
|
+
;;
|
|
24
|
+
;; type_spec is the node Go's own grammar gives one declared type, so one
|
|
25
|
+
;; capture per type_spec is the granularity the rest of the pipeline already
|
|
26
|
+
;; assumes. A plain single-type declaration is unaffected in count -- only its
|
|
27
|
+
;; scope range narrows, from the type keyword to the name.
|
|
28
|
+
;;
|
|
29
|
+
;; NOTE: this string is a JS template literal. Backticks are a syntax error.
|
|
6
30
|
(type_declaration
|
|
7
31
|
(type_spec
|
|
8
|
-
type: [(struct_type) (interface_type)])
|
|
32
|
+
type: [(struct_type) (interface_type)]) @scope.class)
|
|
9
33
|
(function_declaration) @scope.function
|
|
10
34
|
(method_declaration) @scope.function
|
|
11
35
|
(func_literal) @scope.function
|
|
@@ -21,19 +45,48 @@ const GO_SCOPE_QUERY = `
|
|
|
21
45
|
(communication_case) @scope.block
|
|
22
46
|
|
|
23
47
|
;; Declarations — struct
|
|
48
|
+
;;
|
|
49
|
+
;; Anchored on the type_spec, in lockstep with @scope.class above (#2837). Both
|
|
50
|
+
;; captures MUST name the same node: the def node and the class-scope node are
|
|
51
|
+
;; paired by range, so anchoring the def on the enclosing type_declaration while
|
|
52
|
+
;; the scope sits on the type_spec leaves the def strictly larger than its own
|
|
53
|
+
;; scope and NOTHING is owned -- measured as every Go field-receiver edge in the
|
|
54
|
+
;; fixture disappearing, plain declarations included. Keeping both on
|
|
55
|
+
;; type_declaration is the original bug: a grouped block gave both structs the
|
|
56
|
+
;; same capture node, so one silently displaced the other.
|
|
24
57
|
(type_declaration
|
|
25
58
|
(type_spec name: (type_identifier) @declaration.name
|
|
26
|
-
type: (struct_type))
|
|
59
|
+
type: (struct_type)) @declaration.struct)
|
|
27
60
|
|
|
28
61
|
;; Declarations — interface
|
|
62
|
+
;; Same lockstep requirement as @declaration.struct above (#2837).
|
|
29
63
|
(type_declaration
|
|
30
64
|
(type_spec name: (type_identifier) @declaration.name
|
|
31
|
-
type: (interface_type))
|
|
65
|
+
type: (interface_type)) @declaration.interface)
|
|
32
66
|
|
|
33
67
|
;; Declarations — function
|
|
34
68
|
(function_declaration
|
|
35
69
|
name: (identifier) @declaration.name) @declaration.function
|
|
36
70
|
|
|
71
|
+
;; Declarations — closure bindings (\`var f = func(){}\`, \`f := func(){}\`).
|
|
72
|
+
;; The \`@declaration.function\` anchor sits on the INNER func_literal so its
|
|
73
|
+
;; range aligns with the \`(func_literal) @scope.function\` scope above —
|
|
74
|
+
;; without that alignment pass2AttachDeclarations owns the def by the module
|
|
75
|
+
;; scope and calls inside the closure lose caller attribution. Mirrors the
|
|
76
|
+
;; TypeScript \`const f = () => {}\` patterns (#2687).
|
|
77
|
+
(var_declaration
|
|
78
|
+
(var_spec
|
|
79
|
+
name: (identifier) @declaration.name
|
|
80
|
+
value: (expression_list (func_literal) @declaration.function)))
|
|
81
|
+
(var_declaration
|
|
82
|
+
(var_spec_list
|
|
83
|
+
(var_spec
|
|
84
|
+
name: (identifier) @declaration.name
|
|
85
|
+
value: (expression_list (func_literal) @declaration.function))))
|
|
86
|
+
(short_var_declaration
|
|
87
|
+
left: (expression_list (identifier) @declaration.name)
|
|
88
|
+
right: (expression_list (func_literal) @declaration.function))
|
|
89
|
+
|
|
37
90
|
;; Declarations — method
|
|
38
91
|
(method_declaration
|
|
39
92
|
name: (field_identifier) @declaration.name) @declaration.method
|
|
@@ -7,6 +7,10 @@ import { goArityCompatibility, goMergeBindings, populateGoPackageSiblings, resol
|
|
|
7
7
|
import { detectGoInterfaceImplementations } from './interface-impls.js';
|
|
8
8
|
import { populateGoRangeBindings } from './range-binding.js';
|
|
9
9
|
import { expandGoWildcardNames } from './expand-wildcards.js';
|
|
10
|
+
import { goMapValueType } from './interpret.js';
|
|
11
|
+
/** Slice `[]T` and array `[N]T` / `[...]T` → the element spelling. Hoisted —
|
|
12
|
+
* a literal inside the hook would mint a fresh RegExp per folded subscript. */
|
|
13
|
+
const GO_SLICE_ELEMENT_RE = /^\[[^\]]*\]\s*(.+)$/;
|
|
10
14
|
export const goScopeResolver = {
|
|
11
15
|
language: SupportedLanguages.Go,
|
|
12
16
|
languageProvider: goProvider,
|
|
@@ -16,6 +20,41 @@ export const goScopeResolver = {
|
|
|
16
20
|
expandsWildcardTo: (targetModuleScope, parsedFiles) => expandGoWildcardNames(targetModuleScope, parsedFiles),
|
|
17
21
|
mergeBindings: (existing, incoming, scopeId) => goMergeBindings(existing, incoming, scopeId),
|
|
18
22
|
arityCompatibility: (callsite, def) => goArityCompatibility(def, callsite),
|
|
23
|
+
// Only `*` — a pointer leaves the method set reachable by selector unchanged,
|
|
24
|
+
// so `*Host` and `Host` name the same class for receiver typing. `[]` and
|
|
25
|
+
// `map[…]` are deliberately NOT stripped here: they are containers whose
|
|
26
|
+
// member set differs from the element's, and unwrapping them belongs to the
|
|
27
|
+
// index step that consumed a subscript. (Field bindings never reach this
|
|
28
|
+
// anyway — `normalizeGoTypeName` already strips them at capture. The one
|
|
29
|
+
// binding that arrives decorated is the receiver self-binding, kept raw on
|
|
30
|
+
// purpose for `method-owners.ts`.)
|
|
31
|
+
stripTypePreservingDecoration: (typeName) => typeName.startsWith('*') ? typeName.slice(1).trim() : undefined,
|
|
32
|
+
// The subscript counterpart of the stripper above, and the reason the two are
|
|
33
|
+
// separate hooks: `*` is safe to strip at any class lookup, `[]` / `map[K]`
|
|
34
|
+
// only where the source actually indexed. Answers the `index` route only —
|
|
35
|
+
// Go has no property-style collection view.
|
|
36
|
+
//
|
|
37
|
+
// Reads the AS-WRITTEN spelling (`[]*User`), not the capture-normalized name:
|
|
38
|
+
// `normalizeGoTypeName` already collapsed that to `User`, which is exactly the
|
|
39
|
+
// ambiguity that made an unanswered index step fold onto the container. The
|
|
40
|
+
// element is returned STILL DECORATED (`*User`) — the index step looks it up
|
|
41
|
+
// through `stripTypePreservingDecoration` above, so the pointer resolves.
|
|
42
|
+
elementTypeOf: (containerType, via) => {
|
|
43
|
+
if (via.kind !== 'index')
|
|
44
|
+
return undefined;
|
|
45
|
+
const t = containerType.trim();
|
|
46
|
+
// `map[K]V` — a subscript yields V. Literally the same matcher
|
|
47
|
+
// `normalizeGoTypeName` uses, so the two cannot disagree on what a map
|
|
48
|
+
// spelling is.
|
|
49
|
+
const mapValue = goMapValueType(t);
|
|
50
|
+
if (mapValue !== undefined)
|
|
51
|
+
return mapValue;
|
|
52
|
+
// Slice `[]T` and array `[N]T` / `[...]T`.
|
|
53
|
+
const sliceMatch = GO_SLICE_ELEMENT_RE.exec(t);
|
|
54
|
+
if (sliceMatch !== null)
|
|
55
|
+
return sliceMatch[1].trim();
|
|
56
|
+
return undefined;
|
|
57
|
+
},
|
|
19
58
|
buildMro: (graph, parsedFiles, nodeLookup) => buildMro(graph, parsedFiles, nodeLookup, defaultLinearize),
|
|
20
59
|
populateOwners: (parsed) => populateGoOwners(parsed),
|
|
21
60
|
populateWorkspaceOwners: (parsedFiles, ctx) => populateGoWorkspaceOwners(parsedFiles, ctx),
|
|
@@ -132,6 +132,15 @@ export const goProvider = defineLanguage({
|
|
|
132
132
|
descriptionExtractor: createLeadingDocDescriptionExtractor({
|
|
133
133
|
lineCommentPrefixes: ['//'],
|
|
134
134
|
lineDirectivePrefixes: ['//go:', '// +build', '//nolint', '//line'],
|
|
135
|
+
// #2837: Go type declarations anchor on the `type_spec`, whose
|
|
136
|
+
// `previousNamedSibling` is null for the ordinary `type T struct{…}` form —
|
|
137
|
+
// the godoc comment is a sibling of the enclosing `type_declaration`, one
|
|
138
|
+
// level up. Without this the doc silently vanished for EVERY Go struct and
|
|
139
|
+
// interface (measured: pre-#2837 `desc=YES`, post `none`), taking #2270's
|
|
140
|
+
// description out of both the embedding header and the FTS column.
|
|
141
|
+
// Functions/methods are unaffected — they anchor on their own declaration
|
|
142
|
+
// node, which does carry the comment as a previous sibling.
|
|
143
|
+
wrapperNodeTypes: ['type_declaration'],
|
|
135
144
|
}),
|
|
136
145
|
builtInNames: GO_BUILT_INS,
|
|
137
146
|
// ── RFC #909 Ring 3: scope-based resolution hooks ──────────
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { AnalysisFeatureDescriptor } from '../../../analysis-features.js';
|
|
2
2
|
/** Durable completeness contract for Java Spring configuration bindings. */
|
|
3
3
|
export declare const SPRING_CONFIG_BINDINGS_FEATURE: AnalysisFeatureDescriptor;
|
|
4
|
+
/** Durable completeness contract for implicit Java record-component accessors. */
|
|
5
|
+
export declare const JAVA_RECORD_COMPONENT_ACCESSORS_FEATURE: AnalysisFeatureDescriptor;
|
|
6
|
+
/** Durable completeness contract for Java heritage captures. */
|
|
7
|
+
export declare const JAVA_ENUM_INTERFACE_HERITAGE_FEATURE: AnalysisFeatureDescriptor;
|
|
@@ -11,3 +11,15 @@ export const SPRING_CONFIG_BINDINGS_FEATURE = {
|
|
|
11
11
|
// need a one-time rebuild to backfill language-agnostic Property nodes.
|
|
12
12
|
appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java') || isSpringApplicationConfig(filePath)),
|
|
13
13
|
};
|
|
14
|
+
/** Durable completeness contract for implicit Java record-component accessors. */
|
|
15
|
+
export const JAVA_RECORD_COMPONENT_ACCESSORS_FEATURE = {
|
|
16
|
+
id: 'java.record-component-accessors',
|
|
17
|
+
version: 1,
|
|
18
|
+
appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java')),
|
|
19
|
+
};
|
|
20
|
+
/** Durable completeness contract for Java heritage captures. */
|
|
21
|
+
export const JAVA_ENUM_INTERFACE_HERITAGE_FEATURE = {
|
|
22
|
+
id: 'java.heritage-captures',
|
|
23
|
+
version: 1,
|
|
24
|
+
appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java')),
|
|
25
|
+
};
|
|
@@ -2,23 +2,35 @@ import type { ParsedFile } from '../../../../_shared/index.js';
|
|
|
2
2
|
import { type ClassAnnotationFact } from '../../frameworks/spring/bean-candidates.js';
|
|
3
3
|
import { type JvmPackageFact } from '../jvm/package-facts.js';
|
|
4
4
|
import type { JavaSpringConfigConsumerFact } from './spring-config-bindings.js';
|
|
5
|
+
import type { JavaSpringAopFact } from './spring-aop.js';
|
|
6
|
+
import type { JavaSpringConditionalFact } from './spring-conditionals.js';
|
|
5
7
|
import type { JavaSpringDiClassFact } from './spring-di.js';
|
|
8
|
+
import type { JavaSpringNonHttpHandlerFact } from './spring-non-http-handlers.js';
|
|
6
9
|
export type JavaClassAnnotationFact = ClassAnnotationFact;
|
|
7
10
|
export interface JavaCaptureSideChannel {
|
|
8
11
|
readonly kind: 'java';
|
|
9
12
|
readonly packageFact: JvmPackageFact;
|
|
10
13
|
readonly classAnnotations: readonly JavaClassAnnotationFact[];
|
|
14
|
+
readonly springAopFacts?: readonly JavaSpringAopFact[];
|
|
11
15
|
readonly springConfigConsumers?: readonly JavaSpringConfigConsumerFact[];
|
|
16
|
+
readonly springConditionalFacts?: readonly JavaSpringConditionalFact[];
|
|
12
17
|
readonly springDiFacts?: readonly JavaSpringDiClassFact[];
|
|
18
|
+
readonly springNonHttpHandlerFacts?: readonly JavaSpringNonHttpHandlerFact[];
|
|
13
19
|
}
|
|
14
20
|
/** Clear facts retained by a prior workspace pass in a long-lived process. */
|
|
15
21
|
export declare function clearJavaClassAnnotationFacts(): void;
|
|
22
|
+
export declare function setJavaSpringAopFacts(filePath: string, facts: readonly JavaSpringAopFact[]): void;
|
|
23
|
+
export declare function getJavaSpringAopFacts(filePath: string): readonly JavaSpringAopFact[];
|
|
16
24
|
/** Store the annotation syntax collected by Java's existing scope-query traversal. */
|
|
17
25
|
export declare function setJavaClassAnnotationFacts(filePath: string, facts: readonly JavaClassAnnotationFact[]): void;
|
|
18
26
|
export declare function setJavaSpringConfigConsumerFacts(filePath: string, facts: readonly JavaSpringConfigConsumerFact[]): void;
|
|
19
27
|
export declare function getJavaSpringConfigConsumerFacts(filePath: string): readonly JavaSpringConfigConsumerFact[];
|
|
28
|
+
export declare function setJavaSpringConditionalFacts(filePath: string, facts: readonly JavaSpringConditionalFact[]): void;
|
|
29
|
+
export declare function getJavaSpringConditionalFacts(filePath: string): readonly JavaSpringConditionalFact[];
|
|
20
30
|
export declare function setJavaSpringDiFacts(filePath: string, facts: readonly JavaSpringDiClassFact[]): void;
|
|
21
31
|
export declare function getJavaSpringDiFacts(filePath: string): readonly JavaSpringDiClassFact[];
|
|
32
|
+
export declare function setJavaSpringNonHttpHandlerFacts(filePath: string, facts: readonly JavaSpringNonHttpHandlerFact[]): void;
|
|
33
|
+
export declare function getJavaSpringNonHttpHandlerFacts(filePath: string): readonly JavaSpringNonHttpHandlerFact[];
|
|
22
34
|
/** Snapshot worker-local Java annotation facts for ParsedFile serialization. */
|
|
23
35
|
export declare function collectJavaCaptureSideChannel(filePath: string): JavaCaptureSideChannel | undefined;
|
|
24
36
|
export declare function getJavaClassAnnotationFacts(filePath: string): readonly JavaClassAnnotationFact[];
|
|
@@ -2,13 +2,28 @@ import { createClassAnnotationFactStore, } from '../../frameworks/spring/bean-ca
|
|
|
2
2
|
import { isJvmPackageFact, UNKNOWN_JVM_PACKAGE_FACT, } from '../jvm/package-facts.js';
|
|
3
3
|
import { getJavaPackageFact, setJavaPackageFact } from './package-facts.js';
|
|
4
4
|
const classAnnotations = createClassAnnotationFactStore();
|
|
5
|
+
const springAopFacts = new Map();
|
|
5
6
|
const springConfigConsumers = new Map();
|
|
7
|
+
const springConditionalFacts = new Map();
|
|
6
8
|
const springDiFacts = new Map();
|
|
9
|
+
const springNonHttpHandlerFacts = new Map();
|
|
7
10
|
/** Clear facts retained by a prior workspace pass in a long-lived process. */
|
|
8
11
|
export function clearJavaClassAnnotationFacts() {
|
|
9
12
|
classAnnotations.clear();
|
|
13
|
+
springAopFacts.clear();
|
|
10
14
|
springConfigConsumers.clear();
|
|
15
|
+
springConditionalFacts.clear();
|
|
11
16
|
springDiFacts.clear();
|
|
17
|
+
springNonHttpHandlerFacts.clear();
|
|
18
|
+
}
|
|
19
|
+
export function setJavaSpringAopFacts(filePath, facts) {
|
|
20
|
+
if (facts.length === 0)
|
|
21
|
+
springAopFacts.delete(filePath);
|
|
22
|
+
else
|
|
23
|
+
springAopFacts.set(filePath, facts);
|
|
24
|
+
}
|
|
25
|
+
export function getJavaSpringAopFacts(filePath) {
|
|
26
|
+
return springAopFacts.get(filePath) ?? [];
|
|
12
27
|
}
|
|
13
28
|
/** Store the annotation syntax collected by Java's existing scope-query traversal. */
|
|
14
29
|
export function setJavaClassAnnotationFacts(filePath, facts) {
|
|
@@ -23,6 +38,15 @@ export function setJavaSpringConfigConsumerFacts(filePath, facts) {
|
|
|
23
38
|
export function getJavaSpringConfigConsumerFacts(filePath) {
|
|
24
39
|
return springConfigConsumers.get(filePath) ?? [];
|
|
25
40
|
}
|
|
41
|
+
export function setJavaSpringConditionalFacts(filePath, facts) {
|
|
42
|
+
if (facts.length === 0)
|
|
43
|
+
springConditionalFacts.delete(filePath);
|
|
44
|
+
else
|
|
45
|
+
springConditionalFacts.set(filePath, facts);
|
|
46
|
+
}
|
|
47
|
+
export function getJavaSpringConditionalFacts(filePath) {
|
|
48
|
+
return springConditionalFacts.get(filePath) ?? [];
|
|
49
|
+
}
|
|
26
50
|
export function setJavaSpringDiFacts(filePath, facts) {
|
|
27
51
|
if (facts.length === 0)
|
|
28
52
|
springDiFacts.delete(filePath);
|
|
@@ -32,15 +56,30 @@ export function setJavaSpringDiFacts(filePath, facts) {
|
|
|
32
56
|
export function getJavaSpringDiFacts(filePath) {
|
|
33
57
|
return springDiFacts.get(filePath) ?? [];
|
|
34
58
|
}
|
|
59
|
+
export function setJavaSpringNonHttpHandlerFacts(filePath, facts) {
|
|
60
|
+
if (facts.length === 0)
|
|
61
|
+
springNonHttpHandlerFacts.delete(filePath);
|
|
62
|
+
else
|
|
63
|
+
springNonHttpHandlerFacts.set(filePath, facts);
|
|
64
|
+
}
|
|
65
|
+
export function getJavaSpringNonHttpHandlerFacts(filePath) {
|
|
66
|
+
return springNonHttpHandlerFacts.get(filePath) ?? [];
|
|
67
|
+
}
|
|
35
68
|
/** Snapshot worker-local Java annotation facts for ParsedFile serialization. */
|
|
36
69
|
export function collectJavaCaptureSideChannel(filePath) {
|
|
37
70
|
const facts = classAnnotations.get(filePath);
|
|
71
|
+
const aopFacts = springAopFacts.get(filePath) ?? [];
|
|
38
72
|
const configConsumers = springConfigConsumers.get(filePath) ?? [];
|
|
73
|
+
const conditionFacts = springConditionalFacts.get(filePath) ?? [];
|
|
39
74
|
const diFacts = springDiFacts.get(filePath) ?? [];
|
|
75
|
+
const nonHttpHandlerFacts = springNonHttpHandlerFacts.get(filePath) ?? [];
|
|
40
76
|
const packageFact = getJavaPackageFact(filePath);
|
|
41
77
|
if (facts.length === 0 &&
|
|
78
|
+
aopFacts.length === 0 &&
|
|
42
79
|
configConsumers.length === 0 &&
|
|
80
|
+
conditionFacts.length === 0 &&
|
|
43
81
|
diFacts.length === 0 &&
|
|
82
|
+
nonHttpHandlerFacts.length === 0 &&
|
|
44
83
|
packageFact === undefined) {
|
|
45
84
|
return undefined;
|
|
46
85
|
}
|
|
@@ -48,8 +87,11 @@ export function collectJavaCaptureSideChannel(filePath) {
|
|
|
48
87
|
kind: 'java',
|
|
49
88
|
packageFact: packageFact ?? UNKNOWN_JVM_PACKAGE_FACT,
|
|
50
89
|
classAnnotations: facts,
|
|
90
|
+
...(aopFacts.length > 0 ? { springAopFacts: aopFacts } : {}),
|
|
51
91
|
...(configConsumers.length > 0 ? { springConfigConsumers: configConsumers } : {}),
|
|
92
|
+
...(conditionFacts.length > 0 ? { springConditionalFacts: conditionFacts } : {}),
|
|
52
93
|
...(diFacts.length > 0 ? { springDiFacts: diFacts } : {}),
|
|
94
|
+
...(nonHttpHandlerFacts.length > 0 ? { springNonHttpHandlerFacts: nonHttpHandlerFacts } : {}),
|
|
53
95
|
};
|
|
54
96
|
}
|
|
55
97
|
export function getJavaClassAnnotationFacts(filePath) {
|
|
@@ -64,13 +106,19 @@ export function applyJavaCaptureSideChannel(parsed) {
|
|
|
64
106
|
data.kind !== 'java' ||
|
|
65
107
|
!Array.isArray(data.classAnnotations)) {
|
|
66
108
|
setJavaClassAnnotationFacts(parsed.filePath, []);
|
|
109
|
+
setJavaSpringAopFacts(parsed.filePath, []);
|
|
67
110
|
setJavaSpringConfigConsumerFacts(parsed.filePath, []);
|
|
111
|
+
setJavaSpringConditionalFacts(parsed.filePath, []);
|
|
68
112
|
setJavaSpringDiFacts(parsed.filePath, []);
|
|
113
|
+
setJavaSpringNonHttpHandlerFacts(parsed.filePath, []);
|
|
69
114
|
setJavaPackageFact(parsed.filePath, UNKNOWN_JVM_PACKAGE_FACT);
|
|
70
115
|
return;
|
|
71
116
|
}
|
|
72
117
|
setJavaClassAnnotationFacts(parsed.filePath, data.classAnnotations);
|
|
118
|
+
setJavaSpringAopFacts(parsed.filePath, Array.isArray(data.springAopFacts) ? data.springAopFacts : []);
|
|
73
119
|
setJavaSpringConfigConsumerFacts(parsed.filePath, Array.isArray(data.springConfigConsumers) ? data.springConfigConsumers : []);
|
|
120
|
+
setJavaSpringConditionalFacts(parsed.filePath, Array.isArray(data.springConditionalFacts) ? data.springConditionalFacts : []);
|
|
74
121
|
setJavaSpringDiFacts(parsed.filePath, Array.isArray(data.springDiFacts) ? data.springDiFacts : []);
|
|
122
|
+
setJavaSpringNonHttpHandlerFacts(parsed.filePath, Array.isArray(data.springNonHttpHandlerFacts) ? data.springNonHttpHandlerFacts : []);
|
|
75
123
|
setJavaPackageFact(parsed.filePath, isJvmPackageFact(data.packageFact) ? data.packageFact : UNKNOWN_JVM_PACKAGE_FACT);
|
|
76
124
|
}
|