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
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* `ingestion/import-resolvers/utils.ts`). It MUST NOT import anything from
|
|
16
16
|
* `group/` to avoid a dependency cycle.
|
|
17
17
|
*/
|
|
18
|
+
import { parseSpringAnnotationArguments } from '../frameworks/spring/annotation-arguments.js';
|
|
18
19
|
/**
|
|
19
20
|
* Spring shortcut method-annotation → HTTP verb.
|
|
20
21
|
*
|
|
@@ -30,6 +31,94 @@ export const METHOD_ANNOTATION_TO_HTTP = {
|
|
|
30
31
|
DeleteMapping: 'DELETE',
|
|
31
32
|
PatchMapping: 'PATCH',
|
|
32
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* Parse one `RequestMethod.X` literal or a Java annotation array of literals.
|
|
36
|
+
* An empty array is valid and means Spring's unrestricted/default method set.
|
|
37
|
+
* Runtime expressions fail closed instead of producing a guessed route.
|
|
38
|
+
*/
|
|
39
|
+
function parseRequestMethodValues(value) {
|
|
40
|
+
let trimmed = '';
|
|
41
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
42
|
+
const char = value[index];
|
|
43
|
+
const next = value[index + 1];
|
|
44
|
+
if (/\s/.test(char))
|
|
45
|
+
continue;
|
|
46
|
+
if (char === '/' && next === '*') {
|
|
47
|
+
const commentEnd = value.indexOf('*/', index + 2);
|
|
48
|
+
if (commentEnd < 0)
|
|
49
|
+
return null;
|
|
50
|
+
index = commentEnd + 1;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (char === '/' && next === '/') {
|
|
54
|
+
const lineEnd = value.slice(index + 2).search(/[\r\n]/);
|
|
55
|
+
if (lineEnd < 0)
|
|
56
|
+
return null;
|
|
57
|
+
index += lineEnd + 1;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
trimmed += char;
|
|
61
|
+
}
|
|
62
|
+
const hasOpeningBrace = trimmed.startsWith('{');
|
|
63
|
+
const hasClosingBrace = trimmed.endsWith('}');
|
|
64
|
+
if (hasOpeningBrace !== hasClosingBrace)
|
|
65
|
+
return null;
|
|
66
|
+
const body = hasOpeningBrace ? trimmed.slice(1, -1).trim() : trimmed;
|
|
67
|
+
if (body.length === 0)
|
|
68
|
+
return [];
|
|
69
|
+
if (!hasOpeningBrace && body.includes(','))
|
|
70
|
+
return null;
|
|
71
|
+
const methods = [];
|
|
72
|
+
const parts = body.split(',');
|
|
73
|
+
if (hasOpeningBrace && parts[parts.length - 1].trim() === '')
|
|
74
|
+
parts.pop();
|
|
75
|
+
for (const rawPart of parts) {
|
|
76
|
+
const part = rawPart.trim();
|
|
77
|
+
const match = /^(?:(?:[A-Za-z_$][A-Za-z0-9_$]*\.)*RequestMethod\.)?(GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS|TRACE)$/.exec(part);
|
|
78
|
+
if (!match)
|
|
79
|
+
return null;
|
|
80
|
+
if (!methods.includes(match[1]))
|
|
81
|
+
methods.push(match[1]);
|
|
82
|
+
}
|
|
83
|
+
return methods;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve a method-level Spring mapping annotation to its HTTP method(s).
|
|
87
|
+
*
|
|
88
|
+
* Shortcut annotations have one implicit verb. `@RequestMapping` may declare
|
|
89
|
+
* one or more static `RequestMethod.X` values; when its `method` member is
|
|
90
|
+
* absent or an empty array, `'*'` preserves Spring's method-agnostic semantics.
|
|
91
|
+
* A present but non-static method expression yields no methods (fail closed).
|
|
92
|
+
*/
|
|
93
|
+
export function springAnnotationHttpMethods(annotationName, annotationText) {
|
|
94
|
+
const shortcut = METHOD_ANNOTATION_TO_HTTP[annotationName];
|
|
95
|
+
if (shortcut)
|
|
96
|
+
return [shortcut];
|
|
97
|
+
if (annotationName !== 'RequestMapping')
|
|
98
|
+
return [];
|
|
99
|
+
const args = parseSpringAnnotationArguments(annotationText);
|
|
100
|
+
if (args === null)
|
|
101
|
+
return [];
|
|
102
|
+
const methodArgs = args.filter((arg) => arg.name === 'method');
|
|
103
|
+
if (methodArgs.length === 0)
|
|
104
|
+
return ['*'];
|
|
105
|
+
if (methodArgs.length !== 1)
|
|
106
|
+
return [];
|
|
107
|
+
const methods = parseRequestMethodValues(methodArgs[0].value);
|
|
108
|
+
if (methods === null)
|
|
109
|
+
return [];
|
|
110
|
+
return methods.length > 0 ? methods : ['*'];
|
|
111
|
+
}
|
|
112
|
+
/** Intersect class- and method-level Spring mapping constraints. */
|
|
113
|
+
export function intersectSpringHttpMethods(classMethods, methodMethods) {
|
|
114
|
+
if (classMethods.length === 0 || methodMethods.length === 0)
|
|
115
|
+
return [];
|
|
116
|
+
if (classMethods.includes('*'))
|
|
117
|
+
return methodMethods;
|
|
118
|
+
if (methodMethods.includes('*'))
|
|
119
|
+
return classMethods;
|
|
120
|
+
return methodMethods.filter((method) => classMethods.includes(method));
|
|
121
|
+
}
|
|
33
122
|
/**
|
|
34
123
|
* A named annotation argument contributes a route only when its member key is
|
|
35
124
|
* `path` or `value`; a positional argument (no key node) always qualifies.
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import Parser from 'tree-sitter';
|
|
22
22
|
import Java from 'tree-sitter-java';
|
|
23
|
-
import {
|
|
23
|
+
import { intersectSpringHttpMethods, springAnnotationHttpMethods, isRouteMemberKey, findEnclosingType, unquoteSpringLiteral, } from './spring-shared.js';
|
|
24
|
+
import { parseJavaConstOperands } from './java-const-resolver.js';
|
|
24
25
|
/**
|
|
25
26
|
* Single predicate-free tree-sitter query that captures all route annotations
|
|
26
27
|
* on classes and methods. Discrimination by annotation name and node type
|
|
@@ -43,20 +44,27 @@ import { METHOD_ANNOTATION_TO_HTTP, isRouteMemberKey, findEnclosingType, unquote
|
|
|
43
44
|
* suppresses that class's method-level array routes rather than emit them with a
|
|
44
45
|
* dropped prefix (a wrong route). Full class-array cross-product support is left
|
|
45
46
|
* to a follow-up (#2280).
|
|
47
|
+
*
|
|
48
|
+
* The class-level `@value_expr` branches exist for the same reason: a
|
|
49
|
+
* CONSTANT-valued class prefix (`@RequestMapping(ApiPaths.BASE)`) cannot be
|
|
50
|
+
* folded here — the repo-wide constant map only exists in the parse phase — so
|
|
51
|
+
* they only DETECT it, and Phase 2 suppresses every method route under such a
|
|
52
|
+
* class. Without them the prefix was invisible and the method route was emitted
|
|
53
|
+
* unprefixed, i.e. at a path the application does not serve.
|
|
46
54
|
*/
|
|
47
55
|
const ROUTE_ANNOTATION_QUERY = new Parser.Query(Java, `
|
|
48
56
|
[
|
|
49
57
|
(class_declaration
|
|
50
58
|
(modifiers
|
|
51
59
|
(annotation
|
|
52
|
-
name: (identifier) @ann
|
|
60
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
53
61
|
arguments: (annotation_argument_list
|
|
54
62
|
[(string_literal) @value
|
|
55
63
|
(element_value_array_initializer (string_literal) @value)])))) @node
|
|
56
64
|
(class_declaration
|
|
57
65
|
(modifiers
|
|
58
66
|
(annotation
|
|
59
|
-
name: (identifier) @ann
|
|
67
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
60
68
|
arguments: (annotation_argument_list
|
|
61
69
|
(element_value_pair
|
|
62
70
|
key: (identifier) @key
|
|
@@ -65,19 +73,55 @@ const ROUTE_ANNOTATION_QUERY = new Parser.Query(Java, `
|
|
|
65
73
|
(method_declaration
|
|
66
74
|
(modifiers
|
|
67
75
|
(annotation
|
|
68
|
-
name: (identifier) @ann
|
|
76
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
69
77
|
arguments: (annotation_argument_list
|
|
70
78
|
[(string_literal) @value
|
|
71
79
|
(element_value_array_initializer (string_literal) @value)])))) @node
|
|
72
80
|
(method_declaration
|
|
73
81
|
(modifiers
|
|
74
82
|
(annotation
|
|
75
|
-
name: (identifier) @ann
|
|
83
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
76
84
|
arguments: (annotation_argument_list
|
|
77
85
|
(element_value_pair
|
|
78
86
|
key: (identifier) @key
|
|
79
87
|
value: [(string_literal) @value
|
|
80
88
|
(element_value_array_initializer (string_literal) @value)]))))) @node
|
|
89
|
+
(class_declaration
|
|
90
|
+
(modifiers
|
|
91
|
+
(annotation
|
|
92
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
93
|
+
arguments: (annotation_argument_list
|
|
94
|
+
[(identifier) @value_expr
|
|
95
|
+
(field_access) @value_expr
|
|
96
|
+
(binary_expression) @value_expr])))) @node
|
|
97
|
+
(class_declaration
|
|
98
|
+
(modifiers
|
|
99
|
+
(annotation
|
|
100
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
101
|
+
arguments: (annotation_argument_list
|
|
102
|
+
(element_value_pair
|
|
103
|
+
key: (identifier) @key
|
|
104
|
+
value: [(identifier) @value_expr
|
|
105
|
+
(field_access) @value_expr
|
|
106
|
+
(binary_expression) @value_expr]))))) @node
|
|
107
|
+
(method_declaration
|
|
108
|
+
(modifiers
|
|
109
|
+
(annotation
|
|
110
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
111
|
+
arguments: (annotation_argument_list
|
|
112
|
+
[(identifier) @value_expr
|
|
113
|
+
(field_access) @value_expr
|
|
114
|
+
(binary_expression) @value_expr])))) @node
|
|
115
|
+
(method_declaration
|
|
116
|
+
(modifiers
|
|
117
|
+
(annotation
|
|
118
|
+
name: [(identifier) (scoped_identifier)] @ann
|
|
119
|
+
arguments: (annotation_argument_list
|
|
120
|
+
(element_value_pair
|
|
121
|
+
key: (identifier) @key
|
|
122
|
+
value: [(identifier) @value_expr
|
|
123
|
+
(field_access) @value_expr
|
|
124
|
+
(binary_expression) @value_expr]))))) @node
|
|
81
125
|
]
|
|
82
126
|
`);
|
|
83
127
|
/**
|
|
@@ -103,6 +147,18 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
103
147
|
// class-array cross-product support is out of scope here.
|
|
104
148
|
const prefixByClassId = new Map();
|
|
105
149
|
const classesWithArrayPrefix = new Set();
|
|
150
|
+
// Classes whose `@RequestMapping` prefix is a constant reference or concat.
|
|
151
|
+
// Same treatment as the array form, for the same reason: no single prefix
|
|
152
|
+
// string is knowable at extraction time, so emitting the methods below would
|
|
153
|
+
// publish them at a WRONG (unprefixed) path rather than not at all.
|
|
154
|
+
const classesWithUnfoldablePrefix = new Set();
|
|
155
|
+
const classHttpMethodsById = new Map();
|
|
156
|
+
for (const match of TYPE_DECLARATION_QUERY.matches(tree.rootNode)) {
|
|
157
|
+
const typeNode = match.captures.find((capture) => capture.name === 'type')?.node;
|
|
158
|
+
if (typeNode?.type === 'class_declaration') {
|
|
159
|
+
classHttpMethodsById.set(typeNode.id, typeRequestMethods(typeNode));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
106
162
|
for (const match of matches) {
|
|
107
163
|
const caps = {};
|
|
108
164
|
for (const { name, node } of match.captures) {
|
|
@@ -112,11 +168,17 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
112
168
|
const node = caps['node'];
|
|
113
169
|
const valueNode = caps['value'];
|
|
114
170
|
const keyNode = caps['key'];
|
|
115
|
-
|
|
171
|
+
const valueExprNode = caps['value_expr'];
|
|
172
|
+
if (!annNode || !node || (!valueNode && !valueExprNode))
|
|
116
173
|
continue;
|
|
117
|
-
|
|
174
|
+
const capturedAnnotationName = annNode.text.split('.').pop() ?? annNode.text;
|
|
175
|
+
if (node.type === 'class_declaration' && capturedAnnotationName === 'RequestMapping') {
|
|
118
176
|
if (!isRouteMemberKey(keyNode))
|
|
119
177
|
continue;
|
|
178
|
+
if (!valueNode) {
|
|
179
|
+
classesWithUnfoldablePrefix.add(node.id);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
120
182
|
if (valueNode.parent?.type === 'element_value_array_initializer') {
|
|
121
183
|
classesWithArrayPrefix.add(node.id);
|
|
122
184
|
continue;
|
|
@@ -128,6 +190,7 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
128
190
|
}
|
|
129
191
|
// Phase 2: collect method-level routes and resolve their class prefix
|
|
130
192
|
const routes = [];
|
|
193
|
+
const httpMethodsByAnnotationId = new Map();
|
|
131
194
|
for (const match of matches) {
|
|
132
195
|
const caps = {};
|
|
133
196
|
for (const { name, node } of match.captures) {
|
|
@@ -137,18 +200,33 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
137
200
|
const node = caps['node'];
|
|
138
201
|
const valueNode = caps['value'];
|
|
139
202
|
const keyNode = caps['key'];
|
|
140
|
-
|
|
203
|
+
// A constant-referencing value arrives as @value_expr, not @value — the
|
|
204
|
+
// match carries exactly one of the two. Require @value only when no
|
|
205
|
+
// @value_expr is present; the operand branch below folds the expression.
|
|
206
|
+
const valueExprCapture = match.captures.find((c) => c.name === 'value_expr')?.node ?? null;
|
|
207
|
+
if (!annNode || !node || (!valueNode && !valueExprCapture))
|
|
141
208
|
continue;
|
|
142
209
|
if (node.type !== 'method_declaration')
|
|
143
210
|
continue;
|
|
144
|
-
const ann = annNode.text;
|
|
145
|
-
const
|
|
146
|
-
if (!
|
|
147
|
-
continue;
|
|
211
|
+
const ann = annNode.text.split('.').pop() ?? annNode.text;
|
|
212
|
+
const annotationNode = annNode.parent;
|
|
213
|
+
if (!annotationNode)
|
|
214
|
+
continue;
|
|
215
|
+
let methodMethods = httpMethodsByAnnotationId.get(annotationNode.id);
|
|
216
|
+
if (!methodMethods) {
|
|
217
|
+
methodMethods = springAnnotationHttpMethods(ann, annotationNode.text);
|
|
218
|
+
httpMethodsByAnnotationId.set(annotationNode.id, methodMethods);
|
|
219
|
+
}
|
|
220
|
+
if (methodMethods.length === 0)
|
|
221
|
+
continue;
|
|
148
222
|
if (!isRouteMemberKey(keyNode))
|
|
149
223
|
continue;
|
|
150
|
-
|
|
151
|
-
|
|
224
|
+
// #2391-style non-literal path (constant ref or `+`-concat): emit with
|
|
225
|
+
// operands for cross-file folding in the parse phase. The match carries
|
|
226
|
+
// either @value (literal) or @value_expr (non-literal) — never both.
|
|
227
|
+
const valueExprNode = valueExprCapture;
|
|
228
|
+
const routePath = valueNode ? unquoteSpringLiteral(valueNode.text) : null;
|
|
229
|
+
if (routePath === null && !valueExprNode)
|
|
152
230
|
continue;
|
|
153
231
|
const enclosingType = findEnclosingType(node);
|
|
154
232
|
// Interface-declared `@*Mapping`s are not concrete routes on their own — the
|
|
@@ -159,6 +237,9 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
159
237
|
if (enclosingType?.kind === 'interface')
|
|
160
238
|
continue;
|
|
161
239
|
const enclosingClass = enclosingType?.kind === 'class' ? enclosingType.node : null;
|
|
240
|
+
const httpMethods = intersectSpringHttpMethods(enclosingClass ? (classHttpMethodsById.get(enclosingClass.id) ?? ['*']) : ['*'], methodMethods);
|
|
241
|
+
if (httpMethods.length === 0)
|
|
242
|
+
continue;
|
|
162
243
|
// Suppress a method-level *array-form* route nested under a class-level
|
|
163
244
|
// array-form @RequestMapping. The class prefix is one of several values that
|
|
164
245
|
// cannot be resolved to a single string here, so emitting the route would
|
|
@@ -167,23 +248,96 @@ export function extractSpringRoutes(tree, filePath, lineOffset = 0) {
|
|
|
167
248
|
// scan — safe under routeCoverage:'partial'. Full class-array cross-product
|
|
168
249
|
// support is tracked in #2280. (Scalar method paths under an array class
|
|
169
250
|
// prefix are left unchanged: that pre-existing divergence is out of scope.)
|
|
170
|
-
const isArrayElement = valueNode
|
|
251
|
+
const isArrayElement = valueNode?.parent?.type === 'element_value_array_initializer';
|
|
171
252
|
if (isArrayElement && enclosingClass && classesWithArrayPrefix.has(enclosingClass.id)) {
|
|
172
253
|
continue;
|
|
173
254
|
}
|
|
255
|
+
// Same rule for a CONSTANT-valued class prefix (`@RequestMapping(ApiPaths.BASE)`),
|
|
256
|
+
// and for every method route under it — not just array-form ones. The prefix
|
|
257
|
+
// needs the repo-wide constant map, which does not exist at extraction time,
|
|
258
|
+
// so the prefix would simply be dropped and the route emitted at a path the
|
|
259
|
+
// application never serves. On base such a route was not emitted at all;
|
|
260
|
+
// turning a missing fact into a wrong one is the failure this module's skip
|
|
261
|
+
// floor exists to prevent. Folding class prefixes cross-file is a follow-up.
|
|
262
|
+
if (enclosingClass && classesWithUnfoldablePrefix.has(enclosingClass.id)) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
174
265
|
const classPrefix = enclosingClass ? (prefixByClassId.get(enclosingClass.id) ?? '') : '';
|
|
175
266
|
// `node` is the annotated `method_declaration`; its name field is the
|
|
176
267
|
// handler method name (resolved to a symbol UID later by the routes phase).
|
|
177
268
|
const handlerName = node.childForFieldName('name')?.text;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
269
|
+
for (const httpMethod of httpMethods) {
|
|
270
|
+
if (routePath === null && valueExprNode) {
|
|
271
|
+
// Non-literal annotation value: parse operands now; the parse phase
|
|
272
|
+
// folds them against the repo-wide Java constant map (KTD5 skip floor
|
|
273
|
+
// on failure — never a phantom `POST /`).
|
|
274
|
+
const operands = parseJavaConstOperands(valueExprNode);
|
|
275
|
+
if (operands === null)
|
|
276
|
+
continue;
|
|
277
|
+
routes.push({
|
|
278
|
+
filePath,
|
|
279
|
+
routePath: '',
|
|
280
|
+
routePathExpr: valueExprNode.text,
|
|
281
|
+
routePathOperands: operands,
|
|
282
|
+
httpMethod,
|
|
283
|
+
decoratorName: ann,
|
|
284
|
+
lineNumber: annNode.startPosition.row + lineOffset,
|
|
285
|
+
...(classPrefix ? { prefix: classPrefix } : {}),
|
|
286
|
+
...(handlerName ? { handlerName } : {}),
|
|
287
|
+
});
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
routes.push({
|
|
291
|
+
filePath,
|
|
292
|
+
routePath,
|
|
293
|
+
httpMethod,
|
|
294
|
+
decoratorName: ann,
|
|
295
|
+
lineNumber: annNode.startPosition.row + lineOffset,
|
|
296
|
+
...(classPrefix ? { prefix: classPrefix } : {}),
|
|
297
|
+
...(handlerName ? { handlerName } : {}),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Mapping annotations without a path bind to the enclosing class prefix.
|
|
302
|
+
for (const match of TYPE_DECLARATION_QUERY.matches(tree.rootNode)) {
|
|
303
|
+
const typeNode = match.captures.find((capture) => capture.name === 'type')?.node;
|
|
304
|
+
if (typeNode?.type !== 'class_declaration')
|
|
305
|
+
continue;
|
|
306
|
+
// A no-argument `@GetMapping` IS the class prefix, so a class prefix that
|
|
307
|
+
// cannot be folded here leaves nothing to emit — the route would ship with
|
|
308
|
+
// `routePath: ''` and no prefix, i.e. an empty-path Route. The Phase 2 loop
|
|
309
|
+
// above already suppresses these classes; this loop needs the same guard, or
|
|
310
|
+
// the suppression is one-sided and the group side (which routes both shapes
|
|
311
|
+
// through `methodRoutes`) disagrees with ingestion.
|
|
312
|
+
if (classesWithUnfoldablePrefix.has(typeNode.id))
|
|
313
|
+
continue;
|
|
314
|
+
const classPrefix = prefixByClassId.get(typeNode.id) ?? '';
|
|
315
|
+
const classMethods = classHttpMethodsById.get(typeNode.id) ?? ['*'];
|
|
316
|
+
for (const methodNode of directMethods(typeNode)) {
|
|
317
|
+
const handlerName = methodNode.childForFieldName('name')?.text;
|
|
318
|
+
if (!handlerName)
|
|
319
|
+
continue;
|
|
320
|
+
for (const annotationNode of declarationAnnotations(methodNode)) {
|
|
321
|
+
const ann = annotationName(annotationNode) ?? '';
|
|
322
|
+
if (annotationHasRouteMember(annotationNode))
|
|
323
|
+
continue;
|
|
324
|
+
const methodMethods = springAnnotationHttpMethods(ann, annotationNode.text);
|
|
325
|
+
const httpMethods = intersectSpringHttpMethods(classMethods, methodMethods);
|
|
326
|
+
if (httpMethods.length === 0)
|
|
327
|
+
continue;
|
|
328
|
+
for (const httpMethod of httpMethods) {
|
|
329
|
+
routes.push({
|
|
330
|
+
filePath,
|
|
331
|
+
routePath: '',
|
|
332
|
+
httpMethod,
|
|
333
|
+
decoratorName: ann,
|
|
334
|
+
lineNumber: annotationNode.startPosition.row + lineOffset,
|
|
335
|
+
...(classPrefix ? { prefix: classPrefix } : {}),
|
|
336
|
+
handlerName,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
187
341
|
}
|
|
188
342
|
return routes;
|
|
189
343
|
}
|
|
@@ -250,6 +404,35 @@ function annotationRoutePaths(ann) {
|
|
|
250
404
|
}
|
|
251
405
|
return out;
|
|
252
406
|
}
|
|
407
|
+
/** Whether an annotation explicitly supplies a positional or path/value member. */
|
|
408
|
+
function annotationHasRouteMember(ann) {
|
|
409
|
+
const args = ann.childForFieldName('arguments');
|
|
410
|
+
if (!args)
|
|
411
|
+
return false;
|
|
412
|
+
for (const child of args.namedChildren) {
|
|
413
|
+
if (child.type !== 'element_value_pair')
|
|
414
|
+
return true;
|
|
415
|
+
const key = child.childForFieldName('key');
|
|
416
|
+
if (isRouteMemberKey(key ?? undefined))
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
/** Static class/interface-level RequestMapping method constraint, or wildcard by default. */
|
|
422
|
+
function typeRequestMethods(typeNode) {
|
|
423
|
+
const mappings = declarationAnnotations(typeNode).filter((ann) => annotationName(ann) === 'RequestMapping');
|
|
424
|
+
if (mappings.length === 0)
|
|
425
|
+
return ['*'];
|
|
426
|
+
if (mappings.length !== 1)
|
|
427
|
+
return [];
|
|
428
|
+
return springAnnotationHttpMethods('RequestMapping', mappings[0].text);
|
|
429
|
+
}
|
|
430
|
+
function annotationRoutePathsOrDefault(ann) {
|
|
431
|
+
const paths = annotationRoutePaths(ann);
|
|
432
|
+
if (paths.length > 0)
|
|
433
|
+
return paths;
|
|
434
|
+
return annotationHasRouteMember(ann) ? [] : [''];
|
|
435
|
+
}
|
|
253
436
|
/** Class-level `@RequestMapping` prefixes for a type (array-aware; may be []). */
|
|
254
437
|
function typeClassPrefixes(typeNode) {
|
|
255
438
|
const prefixes = [];
|
|
@@ -319,6 +502,7 @@ export function extractSpringTypes(tree, filePath) {
|
|
|
319
502
|
const kind = typeNode.type === 'interface_declaration' ? 'interface' : 'class';
|
|
320
503
|
const annNames = declarationAnnotations(typeNode).map(annotationName);
|
|
321
504
|
const isController = kind === 'class' && (annNames.includes('RestController') || annNames.includes('Controller'));
|
|
505
|
+
const classMethods = typeRequestMethods(typeNode);
|
|
322
506
|
const methods = directMethods(typeNode)
|
|
323
507
|
.map((methodNode) => {
|
|
324
508
|
const methodName = methodNode.childForFieldName('name')?.text;
|
|
@@ -326,11 +510,12 @@ export function extractSpringTypes(tree, filePath) {
|
|
|
326
510
|
return null;
|
|
327
511
|
const routes = [];
|
|
328
512
|
for (const ann of declarationAnnotations(methodNode)) {
|
|
329
|
-
const
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
513
|
+
const methodMethods = springAnnotationHttpMethods(annotationName(ann) ?? '', ann.text);
|
|
514
|
+
const verbs = intersectSpringHttpMethods(classMethods, methodMethods);
|
|
515
|
+
for (const verb of verbs) {
|
|
516
|
+
for (const path of annotationRoutePathsOrDefault(ann))
|
|
517
|
+
routes.push({ method: verb, path });
|
|
518
|
+
}
|
|
334
519
|
}
|
|
335
520
|
return { name: methodName, routes };
|
|
336
521
|
})
|
|
@@ -36,7 +36,15 @@ export function extractParsedFile(provider, sourceText, filePath, onWarn, cached
|
|
|
36
36
|
if (sourceText.trim().length === 0)
|
|
37
37
|
return undefined;
|
|
38
38
|
try {
|
|
39
|
-
|
|
39
|
+
// A provider that rewrites source before parsing must see the same text
|
|
40
|
+
// here that the parse worker fed tree-sitter, or the two halves of the
|
|
41
|
+
// pipeline analyze different programs. Only the cache-miss path re-parses;
|
|
42
|
+
// with a cached tree the emitter ignores the text. The transform is
|
|
43
|
+
// length-preserving, so every offset still indexes the original.
|
|
44
|
+
const parseText = cachedTree === undefined
|
|
45
|
+
? (provider.preprocessSource?.(sourceText, filePath) ?? sourceText)
|
|
46
|
+
: sourceText;
|
|
47
|
+
const captures = provider.emitScopeCaptures(parseText, filePath, cachedTree, { sourceKind });
|
|
40
48
|
return extractScope(captures, filePath, provider);
|
|
41
49
|
}
|
|
42
50
|
catch (err) {
|
|
@@ -34,9 +34,24 @@
|
|
|
34
34
|
* as `ownedDefs` + a local `BindingRef { origin: 'local' }`.
|
|
35
35
|
* 3. **Collect raw imports.** Walk `@import.*` matches. Call
|
|
36
36
|
* `provider.interpretImport` per match; attach the returned
|
|
37
|
-
* `ParsedImport` to the ParsedFile
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* `ParsedImport` to the ParsedFile — not to any `Scope`.
|
|
38
|
+
* `provider.importOwningScope` is declared on `LanguageProvider` and
|
|
39
|
+
* implemented by a dozen providers, but has no call site anywhere; this
|
|
40
|
+
* step's output is a flat per-file list.
|
|
41
|
+
*
|
|
42
|
+
* One scope fact is read before that list flattens it away:
|
|
43
|
+
* `runsOnlyWhenCalled`, set when the statement sits anywhere inside a
|
|
44
|
+
* `Function`. It is decided here because here is the last stage that can
|
|
45
|
+
* — finalize receives the flat list, and its consumer receives a map
|
|
46
|
+
* keyed by the file's Module scope only (see
|
|
47
|
+
* `ParsedImport.runsOnlyWhenCalled`). This is a position fact, not a
|
|
48
|
+
* syntax one, so it is decided centrally for every language rather than
|
|
49
|
+
* per provider — with one capability a provider may declare to opt out
|
|
50
|
+
* of it entirely, `importsExecuteWhereWritten: false`, because position
|
|
51
|
+
* cannot defer an import that never executes (C/C++ `#include`, Rust
|
|
52
|
+
* `use`, COBOL `COPY`). Providers still decide their own *syntactic* nesting
|
|
53
|
+
* facts in their capture emitters, where the node is in hand (see
|
|
54
|
+
* `languages/python/import-decomposer.ts`).
|
|
40
55
|
* 4. **Collect type bindings.** Walk `@type-binding.*` matches. Call
|
|
41
56
|
* `provider.interpretTypeBinding` per match. Attach the resulting
|
|
42
57
|
* `TypeRef` to the innermost containing scope's `typeBindings`
|
|
@@ -61,10 +76,10 @@
|
|
|
61
76
|
import type { CaptureMatch, ParsedFile, SymbolDefinition } from '../../_shared/index.js';
|
|
62
77
|
import type { LanguageProvider } from './language-provider.js';
|
|
63
78
|
/**
|
|
64
|
-
* The subset of `LanguageProvider`
|
|
65
|
-
* as its own type so:
|
|
79
|
+
* The subset of `LanguageProvider` members that `extract()` reads — the hooks
|
|
80
|
+
* it calls plus the capability flags it consults. Declared as its own type so:
|
|
66
81
|
*
|
|
67
|
-
* - Tests can implement just these
|
|
82
|
+
* - Tests can implement just these members without faking the whole
|
|
68
83
|
* `LanguageProvider` interface (which is ~40 fields including the
|
|
69
84
|
* legacy-DAG surface).
|
|
70
85
|
* - The extractor's dependency contract stays explicit — adding a new
|
|
@@ -73,7 +88,7 @@ import type { LanguageProvider } from './language-provider.js';
|
|
|
73
88
|
* Real callers pass a full `LanguageProvider` — structural typing makes it
|
|
74
89
|
* a `ScopeExtractorHooks` for free.
|
|
75
90
|
*/
|
|
76
|
-
export type ScopeExtractorHooks = Pick<LanguageProvider, 'resolveScopeKind' | 'bindingScopeFor' | 'interpretImport' | 'interpretTypeBinding' | 'classifyCallForm'>;
|
|
91
|
+
export type ScopeExtractorHooks = Pick<LanguageProvider, 'resolveScopeKind' | 'scopeOwnsReceivers' | 'bindingScopeFor' | 'interpretImport' | 'importsExecuteWhereWritten' | 'interpretTypeBinding' | 'classifyCallForm'>;
|
|
77
92
|
/**
|
|
78
93
|
* Drive the five extraction passes and return a `ParsedFile`.
|
|
79
94
|
*
|