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
|
@@ -17,10 +17,11 @@
|
|
|
17
17
|
* migrate.
|
|
18
18
|
*/
|
|
19
19
|
import { generateId } from '../../../../lib/utils.js';
|
|
20
|
-
import { qualifiedKey, simpleKey } from '../graph-bridge/node-lookup.js';
|
|
21
|
-
import { isOverloadableCallable } from '../../utils/callable-labels.js';
|
|
20
|
+
import { AMBIGUOUS_POSITION, exactPositionKey, localNameKey, positionKey, qualifiedKey, simpleKey, } from '../graph-bridge/node-lookup.js';
|
|
21
|
+
import { isOverloadableCallable, isPositionQualifiedLocalLabel, } from '../../utils/callable-labels.js';
|
|
22
22
|
import { templateConstraintsIdTag } from '../../utils/template-arguments.js';
|
|
23
23
|
import { parameterShapeIdTag } from '../../utils/method-props.js';
|
|
24
|
+
import { definitionIdPosition } from '../utils/definition-id.js';
|
|
24
25
|
/**
|
|
25
26
|
* Labels that may legitimately ANCHOR a CALLS/ACCESSES edge as the
|
|
26
27
|
* source ("caller"). A Variable / Property can be the TARGET of an
|
|
@@ -40,15 +41,22 @@ import { parameterShapeIdTag } from '../../utils/method-props.js';
|
|
|
40
41
|
* restricted to function/class-likes, those calls correctly fall
|
|
41
42
|
* through to the File-node fallback at the bottom of the walk.
|
|
42
43
|
*/
|
|
44
|
+
export const CALLER_ANCHOR_LABELS = new Set([
|
|
45
|
+
'Function',
|
|
46
|
+
'Method',
|
|
47
|
+
'Constructor',
|
|
48
|
+
'Module',
|
|
49
|
+
'Class',
|
|
50
|
+
'Interface',
|
|
51
|
+
'Struct',
|
|
52
|
+
'Enum',
|
|
53
|
+
// Record is class-like executable context for declaration initializers.
|
|
54
|
+
// Without this anchor, calls from Java static-field / C# property initializers
|
|
55
|
+
// fall through to File even though the canonical Record node is linkable.
|
|
56
|
+
'Record',
|
|
57
|
+
]);
|
|
43
58
|
function isCallerAnchorLabel(label) {
|
|
44
|
-
return (label
|
|
45
|
-
label === 'Method' ||
|
|
46
|
-
label === 'Constructor' ||
|
|
47
|
-
label === 'Module' ||
|
|
48
|
-
label === 'Class' ||
|
|
49
|
-
label === 'Interface' ||
|
|
50
|
-
label === 'Struct' ||
|
|
51
|
-
label === 'Enum');
|
|
59
|
+
return CALLER_ANCHOR_LABELS.has(label);
|
|
52
60
|
}
|
|
53
61
|
function rangeContainsPoint(range, at) {
|
|
54
62
|
if (at.startLine < range.startLine || at.startLine > range.endLine)
|
|
@@ -59,21 +67,64 @@ function rangeContainsPoint(range, at) {
|
|
|
59
67
|
return false;
|
|
60
68
|
return true;
|
|
61
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Adapter over the canonical {@link isOverloadableCallable} — deliberately NOT a
|
|
72
|
+
* second spelling of the label set. An earlier revision of this file inlined
|
|
73
|
+
* `Function | Method | Constructor` here, which recreated the exact twin-list
|
|
74
|
+
* drift this PR adds a guard test for elsewhere.
|
|
75
|
+
*/
|
|
76
|
+
const isCallableDef = (d) => isOverloadableCallable(d.type);
|
|
77
|
+
/**
|
|
78
|
+
* True when `range` is the body of `def` itself — the scope's start position
|
|
79
|
+
* equals the def's declaration position.
|
|
80
|
+
*
|
|
81
|
+
* Safe to compare directly: `scope-extractor.ts` builds a def id as
|
|
82
|
+
* `def:<filePath>#<startLine>:<startCol>:<type>:<name>` from the same `Range`
|
|
83
|
+
* a scope carries, so both sides share one coordinate base and need no
|
|
84
|
+
* conversion. (Do not "fix" this against the 1-based reading in
|
|
85
|
+
* `defStartLine`'s docblock — what matters here is that the two sides agree
|
|
86
|
+
* with each other, not which base they use.)
|
|
87
|
+
*/
|
|
88
|
+
function scopeIsCallableBody(range, def) {
|
|
89
|
+
const position = definitionIdPosition(def.nodeId, def.filePath);
|
|
90
|
+
if (position === undefined)
|
|
91
|
+
return false;
|
|
92
|
+
return position.line === range.startLine && position.column === range.startCol;
|
|
93
|
+
}
|
|
62
94
|
/** Pick the callable that owns `atRange` when multiple overloads share a class scope. */
|
|
63
95
|
function pickCallerCallableDef(scope, scopes, atRange) {
|
|
64
96
|
if (atRange !== undefined) {
|
|
65
97
|
for (const childId of scopes.scopeTree.getChildren(scope.id)) {
|
|
66
98
|
const child = scopes.scopeTree.getScope(childId);
|
|
67
|
-
if (child === undefined
|
|
99
|
+
if (child === undefined)
|
|
68
100
|
continue;
|
|
69
101
|
if (!rangeContainsPoint(child.range, atRange))
|
|
70
102
|
continue;
|
|
71
|
-
const childCallable = child.ownedDefs.find(
|
|
72
|
-
if (childCallable
|
|
73
|
-
|
|
103
|
+
const childCallable = child.ownedDefs.find(isCallableDef);
|
|
104
|
+
if (childCallable === undefined)
|
|
105
|
+
continue;
|
|
106
|
+
if (child.kind === 'Function')
|
|
107
|
+
return { def: childCallable, fromChildScope: true };
|
|
108
|
+
// A Block-kind scope is a callable boundary ONLY when the scope IS that
|
|
109
|
+
// callable's own body. Kotlin `lambda_literal` and Ruby `do_block`/`block`
|
|
110
|
+
// are @scope.block deliberately (#1757 smart casts), so the kind gate
|
|
111
|
+
// alone would never let a closure there become a call SOURCE (#2699).
|
|
112
|
+
//
|
|
113
|
+
// But relaxing the gate to accept ANY Block owning a callable is wrong:
|
|
114
|
+
// a nested `fun foo()` declared inside a block is owned by that block, so
|
|
115
|
+
// a call made at BLOCK level — outside foo — would be misattributed to
|
|
116
|
+
// foo. The alignment test discriminates them. For a closure the
|
|
117
|
+
// declaration and the scope sit on the SAME node (the anchor discipline
|
|
118
|
+
// documented in javascript/query.ts), so their start positions match; for
|
|
119
|
+
// a nested function the block starts at `{` and the def starts at the
|
|
120
|
+
// declaration, so they do not.
|
|
121
|
+
if (child.kind === 'Block' && scopeIsCallableBody(child.range, childCallable)) {
|
|
122
|
+
return { def: childCallable, fromChildScope: true };
|
|
123
|
+
}
|
|
74
124
|
}
|
|
75
125
|
}
|
|
76
|
-
|
|
126
|
+
const own = scope.ownedDefs.find(isCallableDef);
|
|
127
|
+
return own === undefined ? undefined : { def: own, fromChildScope: false };
|
|
77
128
|
}
|
|
78
129
|
/**
|
|
79
130
|
* Look up a `SymbolDefinition` in the graph node lookup.
|
|
@@ -92,11 +143,191 @@ function pickCallerCallableDef(scope, scopes, atRange) {
|
|
|
92
143
|
* resolution working for languages that don't yet synthesize
|
|
93
144
|
* qualifiers).
|
|
94
145
|
*/
|
|
146
|
+
/**
|
|
147
|
+
* Trailing segment of a dotted qualified name (`Outer.inner` -> `inner`),
|
|
148
|
+
* with any function-local `@line:col` identity suffix stripped
|
|
149
|
+
* (`run.pick@5:10` -> `pick`).
|
|
150
|
+
*
|
|
151
|
+
* The graph node's `name` property is the bare source name, so the position
|
|
152
|
+
* key must compare against that — the position it carries is already the
|
|
153
|
+
* disambiguator, and leaving the suffix on would make every local miss.
|
|
154
|
+
*/
|
|
155
|
+
function simpleNameOf(qualifiedName) {
|
|
156
|
+
const dot = qualifiedName.lastIndexOf('.');
|
|
157
|
+
const tail = dot === -1 ? qualifiedName : qualifiedName.slice(dot + 1);
|
|
158
|
+
return tail.replace(LOCAL_IDENTITY_SUFFIX, '');
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The function-local identity marker appended by `localIdentity` (`name@row:col`).
|
|
162
|
+
* Shared so the stripper above and the fail-closed guard in
|
|
163
|
+
* `resolveCallerGraphId` cannot disagree about what counts as a local.
|
|
164
|
+
*/
|
|
165
|
+
const LOCAL_IDENTITY_SUFFIX = /@\d+:\d+$/;
|
|
166
|
+
/**
|
|
167
|
+
* The OTHER callable label the same construct may be registered under.
|
|
168
|
+
*
|
|
169
|
+
* A def and its graph node describe one construct, but they do not always agree
|
|
170
|
+
* on its LABEL: some structure phases emit a type's methods as `Function` nodes
|
|
171
|
+
* while the scope extractor derives `Method` from the `@declaration.method`
|
|
172
|
+
* anchor. Every key `resolveDefGraphId` builds is label-scoped, so such a pair
|
|
173
|
+
* misses ALL of them and lands on the label-agnostic, first-write-wins
|
|
174
|
+
* `simpleKey` at the bottom (#2807 follow-up, measured in Swift).
|
|
175
|
+
*
|
|
176
|
+
* ONE definition, consulted by all three key families — position, local-name
|
|
177
|
+
* guard, qualified — because they are not independent: leaving it out of the
|
|
178
|
+
* position key makes the fail-closed guard beside it UNREACHABLE for exactly the
|
|
179
|
+
* split the qualified retry serves, so the retry inherits a case the guard was
|
|
180
|
+
* written to stop (a function-local aliased onto a same-named class method).
|
|
181
|
+
* What each family may do with it differs and is documented at each site.
|
|
182
|
+
*/
|
|
183
|
+
function siblingCallableLabel(label) {
|
|
184
|
+
if (label === 'Method')
|
|
185
|
+
return 'Function';
|
|
186
|
+
if (label === 'Function')
|
|
187
|
+
return 'Method';
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
95
190
|
export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
96
191
|
const qn = def.qualifiedName;
|
|
97
192
|
if (qn === undefined || qn.length === 0)
|
|
98
193
|
return undefined;
|
|
99
194
|
if (def.type !== undefined) {
|
|
195
|
+
// ONE binding for all three key families — see `siblingCallableLabel`, which
|
|
196
|
+
// documents why they cannot be given independent answers. What each family
|
|
197
|
+
// is allowed to DO with it still differs, and is documented at each site.
|
|
198
|
+
const siblingLabel = siblingCallableLabel(def.type);
|
|
199
|
+
// Position key FIRST (#2699). A def and its graph node are the same
|
|
200
|
+
// construct, so they share a source line — the only evidence that
|
|
201
|
+
// separates a function-local declaration from a same-named file-level one
|
|
202
|
+
// without either side having to model the scope chain. Node ids are
|
|
203
|
+
// 0-based, def ids 1-based. An `AMBIGUOUS_POSITION` tombstone (two
|
|
204
|
+
// callables on one line) falls through to the name-based keys below.
|
|
205
|
+
//
|
|
206
|
+
// For a closure binding the two query channels still anchor on different
|
|
207
|
+
// AST nodes (outer wrapper vs inner callable), but the graph node's
|
|
208
|
+
// `startLine` follows the initializer (#2735) so this join matches even
|
|
209
|
+
// when the binding is split across lines.
|
|
210
|
+
const definitionPosition = definitionIdPosition(def.nodeId, filePath);
|
|
211
|
+
const line = definitionPosition?.line;
|
|
212
|
+
if (line !== undefined && isPositionQualifiedLocalLabel(def.type)) {
|
|
213
|
+
const simple = simpleNameOf(qn);
|
|
214
|
+
if (definitionPosition !== undefined) {
|
|
215
|
+
const exactHit = nodeLookup.get(exactPositionKey(filePath, def.type, definitionPosition.line - 1, definitionPosition.column));
|
|
216
|
+
if (exactHit !== undefined && exactHit !== AMBIGUOUS_POSITION)
|
|
217
|
+
return exactHit;
|
|
218
|
+
if (exactHit === undefined && siblingLabel !== undefined) {
|
|
219
|
+
const siblingExactHit = nodeLookup.get(exactPositionKey(filePath, siblingLabel, definitionPosition.line - 1, definitionPosition.column));
|
|
220
|
+
if (siblingExactHit !== undefined && siblingExactHit !== AMBIGUOUS_POSITION) {
|
|
221
|
+
return siblingExactHit;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const posHit = nodeLookup.get(positionKey(filePath, def.type, line - 1, simple));
|
|
226
|
+
if (posHit !== undefined && posHit !== AMBIGUOUS_POSITION)
|
|
227
|
+
return posHit;
|
|
228
|
+
// Retry under the sibling callable label when the def's OWN label
|
|
229
|
+
// registered NOTHING here — see `siblingCallableLabel`. Both keys in this
|
|
230
|
+
// block are label-scoped, so under a split the position join misses and
|
|
231
|
+
// the guard below cannot fire, and the def falls through to the qualified
|
|
232
|
+
// retry that ends on the class method of the same name: a function-local
|
|
233
|
+
// `func helper` inside `Host.run` was aliased onto `Host.helper`, taking
|
|
234
|
+
// its calls with it, even at a different arity.
|
|
235
|
+
//
|
|
236
|
+
// Deliberately NOT dot-gated the way the qualified retry is: this key is
|
|
237
|
+
// not a name. `(file, line, simple name)` identifies one declaration by
|
|
238
|
+
// itself — that is why `positionKey` needs no qualifier at all — so
|
|
239
|
+
// crossing the two callable labels here cannot alias a top-level `save`
|
|
240
|
+
// onto a class's `save` the way a bare NAME would.
|
|
241
|
+
//
|
|
242
|
+
// Gated on `posHit === undefined` so an `AMBIGUOUS_POSITION` tombstone
|
|
243
|
+
// keeps meaning ambiguous: two callables already claim this line under the
|
|
244
|
+
// def's own label, and relabelling must not resolve by picking a third.
|
|
245
|
+
if (posHit === undefined && siblingLabel !== undefined) {
|
|
246
|
+
const siblingPosHit = nodeLookup.get(positionKey(filePath, siblingLabel, line - 1, simple));
|
|
247
|
+
if (siblingPosHit !== undefined && siblingPosHit !== AMBIGUOUS_POSITION) {
|
|
248
|
+
return siblingPosHit;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// FAIL CLOSED when a function-local of this name exists in the file (#2699
|
|
252
|
+
// follow-up). Falling through to the name keys would end at the label-agnostic,
|
|
253
|
+
// first-write-wins `simpleKey` below and alias this def onto whichever same-named
|
|
254
|
+
// callable was registered first — reproducibly minting a FALSE edge. A missing
|
|
255
|
+
// edge is the correct failure direction for a graph whose consumers include
|
|
256
|
+
// `impact`; a fabricated caller is not. Gated on `localNameKey` so this ONLY
|
|
257
|
+
// fires where the collision is real — a file with no such local keeps its
|
|
258
|
+
// previous fallback behaviour, which is what preserves legitimate anchor
|
|
259
|
+
// differences such as a Vue SFC's `lineOffset`.
|
|
260
|
+
//
|
|
261
|
+
// Multi-line closure bindings are NOT this case anymore (#2735): their graph
|
|
262
|
+
// `startLine` follows the initializer, so the position key above hits.
|
|
263
|
+
if (nodeLookup.get(localNameKey(filePath, def.type, simple)) !== undefined) {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
// Same guard under the sibling label: a local the structure phase
|
|
267
|
+
// registered as `Function` must still stop a `Method`-labelled def of that
|
|
268
|
+
// name from reaching `simpleKey`, or the split re-opens the fabricated
|
|
269
|
+
// edge this guard exists to close. Unlike the position retry above this
|
|
270
|
+
// arm is NOT conditioned on the own-label lookup missing — it only ever
|
|
271
|
+
// returns `undefined`, and a missing edge is the correct failure
|
|
272
|
+
// direction; declining to check would be the risky choice, not this.
|
|
273
|
+
if (siblingLabel !== undefined &&
|
|
274
|
+
nodeLookup.get(localNameKey(filePath, siblingLabel, simple)) !== undefined) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Name forms to try for every keyed lookup below, most specific first.
|
|
279
|
+
//
|
|
280
|
+
// #1982/#2742: some scope-extractors qualify a def by its enclosing CLASS
|
|
281
|
+
// chain (`A.Inner`) or leave it a bare tail, while the structure-phase node is
|
|
282
|
+
// keyed by the full path (`NS.A.Inner`, or a Rust `mod` chain). The
|
|
283
|
+
// namespace-prefixed form is therefore the more specific one and must be tried
|
|
284
|
+
// first — the bare form happily matches a same-named item at a DIFFERENT
|
|
285
|
+
// namespace depth in the same file and returns it before any retry is reached
|
|
286
|
+
// (#2742: a call into `mod inner { fn dispatch }` bound to the crate-root
|
|
287
|
+
// `fn dispatch` and rendered as a self-loop).
|
|
288
|
+
//
|
|
289
|
+
// Applied to the TAGGED keys too, not just the plain one. Previously only the
|
|
290
|
+
// plain key had the prefixed retry, so for a namespace/mod-qualified def every
|
|
291
|
+
// tagged key — constraints, parameter types, parameter shape, arity, template
|
|
292
|
+
// arguments — composed from the bare tail and simply missed the node
|
|
293
|
+
// `node-lookup.ts` had registered under the qualified name. Those keys exist to
|
|
294
|
+
// separate overloads, so leaving them dead meant a mod-scoped overload set
|
|
295
|
+
// depended on whichever later key happened to catch it.
|
|
296
|
+
const defType = def.type;
|
|
297
|
+
const nsPrefix = def.namespacePrefix;
|
|
298
|
+
const nameForms = nsPrefix !== undefined && nsPrefix.length > 0 ? [`${nsPrefix}.${qn}`, qn] : [qn];
|
|
299
|
+
// The label split described on `siblingCallableLabel` also kills every key
|
|
300
|
+
// above: they are all label-scoped, so a split pair misses all of them and
|
|
301
|
+
// lands on the label-agnostic simple key at the bottom of this function —
|
|
302
|
+
// which is first-write-wins, so two same-named methods in ONE file both
|
|
303
|
+
// resolved to whichever was registered first. That silently misattributed
|
|
304
|
+
// every call in the second method's body to the first (#2807 follow-up;
|
|
305
|
+
// measured in Swift, where `class A { func run }` + `class B { func run }`
|
|
306
|
+
// gave A.run both bodies' edges and B.run none).
|
|
307
|
+
//
|
|
308
|
+
// Crossing the two callable labels is sound HERE only for a name that
|
|
309
|
+
// carries its owner: `A.run` names exactly one construct whatever the
|
|
310
|
+
// label, while a bare `run` is precisely the aliasing the label was added
|
|
311
|
+
// to prevent (a top-level `save` vs a class's `save`). Hence the dot gate —
|
|
312
|
+
// it keeps the original guarantee intact for unqualified names. The
|
|
313
|
+
// position key above needs no such gate because it is not a name.
|
|
314
|
+
const lookupTagged = (tag) => {
|
|
315
|
+
for (const form of nameForms) {
|
|
316
|
+
const hit = nodeLookup.get(qualifiedKey(filePath, defType, `${form}${tag}`));
|
|
317
|
+
if (hit !== undefined)
|
|
318
|
+
return hit;
|
|
319
|
+
}
|
|
320
|
+
if (siblingLabel === undefined)
|
|
321
|
+
return undefined;
|
|
322
|
+
for (const form of nameForms) {
|
|
323
|
+
if (!form.includes('.'))
|
|
324
|
+
continue;
|
|
325
|
+
const hit = nodeLookup.get(qualifiedKey(filePath, siblingLabel, `${form}${tag}`));
|
|
326
|
+
if (hit !== undefined)
|
|
327
|
+
return hit;
|
|
328
|
+
}
|
|
329
|
+
return undefined;
|
|
330
|
+
};
|
|
100
331
|
// SFINAE / `requires`-clause disambiguation (issue #1579) — try the
|
|
101
332
|
// constraint-fingerprinted key FIRST. Two function-template overloads
|
|
102
333
|
// with identical `parameterTypes` but mutually-exclusive SFINAE
|
|
@@ -105,8 +336,7 @@ export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
|
105
336
|
// share the latter.
|
|
106
337
|
if ((def.type === 'Function' || def.type === 'Method') &&
|
|
107
338
|
def.templateConstraints !== undefined) {
|
|
108
|
-
const
|
|
109
|
-
const cHit = nodeLookup.get(cKey);
|
|
339
|
+
const cHit = lookupTagged(templateConstraintsIdTag(def.templateConstraints));
|
|
110
340
|
if (cHit !== undefined)
|
|
111
341
|
return cHit;
|
|
112
342
|
}
|
|
@@ -115,8 +345,7 @@ export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
|
115
345
|
def.parameterTypeClasses !== undefined) {
|
|
116
346
|
const shapeTag = parameterShapeIdTag(def.parameterTypes, def.parameterTypeClasses);
|
|
117
347
|
if (shapeTag !== '') {
|
|
118
|
-
const
|
|
119
|
-
const shapeHit = nodeLookup.get(shapeKey);
|
|
348
|
+
const shapeHit = lookupTagged(shapeTag);
|
|
120
349
|
if (shapeHit !== undefined)
|
|
121
350
|
return shapeHit;
|
|
122
351
|
}
|
|
@@ -131,8 +360,7 @@ export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
|
131
360
|
if (isOverloadableCallable(def.type) &&
|
|
132
361
|
def.parameterTypes !== undefined &&
|
|
133
362
|
def.parameterTypes.length > 0) {
|
|
134
|
-
const
|
|
135
|
-
const pHit = nodeLookup.get(pKey);
|
|
363
|
+
const pHit = lookupTagged(`~${def.parameterTypes.join(',')}`);
|
|
136
364
|
if (pHit !== undefined)
|
|
137
365
|
return pHit;
|
|
138
366
|
}
|
|
@@ -141,8 +369,7 @@ export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
|
141
369
|
// zero-arg overload (no parameterTypes) that would otherwise collapse onto a
|
|
142
370
|
// sibling overload via the source-order-dependent qualified key.
|
|
143
371
|
if (isOverloadableCallable(def.type) && def.parameterCount !== undefined) {
|
|
144
|
-
const
|
|
145
|
-
const aHit = nodeLookup.get(aKey);
|
|
372
|
+
const aHit = lookupTagged(`#${def.parameterCount}`);
|
|
146
373
|
if (aHit !== undefined)
|
|
147
374
|
return aHit;
|
|
148
375
|
}
|
|
@@ -153,26 +380,13 @@ export function resolveDefGraphId(filePath, def, nodeLookup) {
|
|
|
153
380
|
def.type === 'Record') &&
|
|
154
381
|
def.templateArguments !== undefined &&
|
|
155
382
|
def.templateArguments.length > 0) {
|
|
156
|
-
const
|
|
157
|
-
const tHit = nodeLookup.get(tKey);
|
|
383
|
+
const tHit = lookupTagged(`~${def.templateArguments.join(',')}`);
|
|
158
384
|
if (tHit !== undefined)
|
|
159
385
|
return tHit;
|
|
160
386
|
}
|
|
161
|
-
const qualifiedHit =
|
|
387
|
+
const qualifiedHit = lookupTagged('');
|
|
162
388
|
if (qualifiedHit !== undefined)
|
|
163
389
|
return qualifiedHit;
|
|
164
|
-
// #1982: some scope-extractors qualify a type by its enclosing CLASS chain
|
|
165
|
-
// (`A.Inner`) but drop the enclosing NAMESPACE, while the structure-phase
|
|
166
|
-
// node is keyed by the full path (`NS.A.Inner`). Retry with the
|
|
167
|
-
// namespace-prefixed key (tagged by `tagNamespacePrefixes`) BEFORE the
|
|
168
|
-
// simple-name fallback, so same-tail nested bases don't collapse across
|
|
169
|
-
// sibling namespace members via `simpleKey`.
|
|
170
|
-
const nsPrefix = def.namespacePrefix;
|
|
171
|
-
if (nsPrefix !== undefined && nsPrefix.length > 0) {
|
|
172
|
-
const nsHit = nodeLookup.get(qualifiedKey(filePath, def.type, `${nsPrefix}.${qn}`));
|
|
173
|
-
if (nsHit !== undefined)
|
|
174
|
-
return nsHit;
|
|
175
|
-
}
|
|
176
390
|
}
|
|
177
391
|
const simpleName = qn.lastIndexOf('.') === -1 ? qn : qn.slice(qn.lastIndexOf('.') + 1);
|
|
178
392
|
return nodeLookup.get(simpleKey(filePath, simpleName));
|
|
@@ -187,7 +401,7 @@ export function simpleQualifiedName(def) {
|
|
|
187
401
|
}
|
|
188
402
|
/**
|
|
189
403
|
* Walk the scope chain from `startScope` upward looking for the first
|
|
190
|
-
* scope whose `ownedDefs` contains a
|
|
404
|
+
* scope whose `ownedDefs` contains a callable or class-like anchor — that's
|
|
191
405
|
* our caller anchor. Translate via `nodeLookup` to the graph-node ID.
|
|
192
406
|
*
|
|
193
407
|
* Module-level references (e.g. Python `u = models.User()` at top
|
|
@@ -209,13 +423,37 @@ export function resolveCallerGraphId(startScope, scopes, nodeLookup, atRange) {
|
|
|
209
423
|
break;
|
|
210
424
|
lastFilePath = scope.filePath;
|
|
211
425
|
// Prefer Function/Method/Constructor anchors; fall back to
|
|
212
|
-
// Class/Interface/Struct/Enum. Variable/Property are NOT valid
|
|
426
|
+
// Class/Interface/Struct/Enum/Record. Variable/Property are NOT valid
|
|
213
427
|
// caller anchors — see `isCallerAnchorLabel` for why.
|
|
214
|
-
const
|
|
215
|
-
if (
|
|
428
|
+
const picked = pickCallerCallableDef(scope, scopes, atRange);
|
|
429
|
+
if (picked !== undefined) {
|
|
430
|
+
const fnDef = picked.def;
|
|
216
431
|
const id = resolveDefGraphId(fnDef.filePath, fnDef, nodeLookup);
|
|
217
432
|
if (id !== undefined)
|
|
218
433
|
return id;
|
|
434
|
+
// FAIL CLOSED at a FUNCTION-LOCAL boundary (#2699 review P1-1).
|
|
435
|
+
//
|
|
436
|
+
// `fnDef` is the callable that genuinely owns this call site. When its
|
|
437
|
+
// graph node cannot be named, climbing to the parent scope does not
|
|
438
|
+
// degrade gracefully — it ATTRIBUTES THE CALL TO A FUNCTION THAT DOES NOT
|
|
439
|
+
// MAKE IT. Measured before this guard, a closure whose literal starts on
|
|
440
|
+
// the line after its binding
|
|
441
|
+
// $multi =
|
|
442
|
+
// function ($x) { return target($x); };
|
|
443
|
+
// emitted `outer -> target` while the real `outer.$multi` node sat with no
|
|
444
|
+
// outgoing edges: a CALLS edge present nowhere in the source, which is the
|
|
445
|
+
// exact defect class #2699 exists to remove.
|
|
446
|
+
//
|
|
447
|
+
// Restricted to defs carrying the function-local `@line:col` identity,
|
|
448
|
+
// because that is precisely the set whose position join can miss (the two
|
|
449
|
+
// query channels anchor on different nodes by design). For every other
|
|
450
|
+
// callable the historical climb is preserved, so this cannot silently
|
|
451
|
+
// delete edges outside the local-identity path.
|
|
452
|
+
// The scope we are standing in OWNS this call site and we have identified
|
|
453
|
+
// its callable — we simply cannot name that callable's graph node. Climbing
|
|
454
|
+
// to an ancestor here does not degrade gracefully: it credits the call to a
|
|
455
|
+
// function that does not make it. Fail closed instead.
|
|
456
|
+
return undefined;
|
|
219
457
|
}
|
|
220
458
|
const classDef = scope.ownedDefs.find((d) => isCallerAnchorLabel(d.type));
|
|
221
459
|
if (classDef !== undefined) {
|
|
@@ -10,8 +10,131 @@
|
|
|
10
10
|
* single function. The `reason` defaults to
|
|
11
11
|
* `'scope-resolution: import'`; provider may override if downstream
|
|
12
12
|
* filters on reason.
|
|
13
|
+
*
|
|
14
|
+
* ## Non-initializing imports carry a distinct `reason`
|
|
15
|
+
*
|
|
16
|
+
* A pair reached ONLY by imports that cannot run at module-initialization time
|
|
17
|
+
* still gets an edge — it is a real dependency, and impact/trace must see it —
|
|
18
|
+
* but it cannot participate in the kind of cycle `check --cycles` exists to
|
|
19
|
+
* find. There are two such kinds, and they are NOT the same fact:
|
|
20
|
+
*
|
|
21
|
+
* - **deferred** — the import exists at runtime, just later. `import('./m')`
|
|
22
|
+
* and a function-local `import` both really load the module; what they do
|
|
23
|
+
* not do is load it while the importing module is still initializing.
|
|
24
|
+
* Deferring is in fact the standard idiom for BREAKING an init cycle, and
|
|
25
|
+
* this repository uses it that way on purpose in both spellings:
|
|
26
|
+
* `core/group/service.ts` does `await import('./cross-impact.js')`, and
|
|
27
|
+
* `eval/workflow_bench/proposer_sandbox.py` puts a plain `import` inside a
|
|
28
|
+
* function under the comment "Kept lazy to avoid a module cycle".
|
|
29
|
+
* - **type-only** — the import does not exist at runtime AT ALL. `tsc` deletes
|
|
30
|
+
* `import type { X } from './m'`; the emitted JavaScript contains no
|
|
31
|
+
* reference to `./m`. Nothing was made later; the dependency is compile-time
|
|
32
|
+
* only. Eight of the ten false cycles this repository reports are this.
|
|
33
|
+
*
|
|
34
|
+
* Reporting either as an init cycle flags the fix as the bug. They get separate
|
|
35
|
+
* suffixes rather than one shared "not really an import" tag because the two
|
|
36
|
+
* answers to "does this edge exist when the program runs?" are opposite, and a
|
|
37
|
+
* reader of the graph — or the next filter written against `reason` — needs to
|
|
38
|
+
* be able to tell them apart.
|
|
39
|
+
*
|
|
40
|
+
* Three signals, because no one of them covers the others. All three ride the
|
|
41
|
+
* EDGE — this function reads properties and never walks the scope tree for
|
|
42
|
+
* them, for the reason spelled out under "Why nothing here is derived from the
|
|
43
|
+
* scope tree" below:
|
|
44
|
+
*
|
|
45
|
+
* - `ImportEdge.kind === 'dynamic-resolved'` — TS/JS `import()`.
|
|
46
|
+
* - `ImportEdge.runsOnlyWhenCalled` — the import sits inside a function body
|
|
47
|
+
* AND this language's imports execute where they are written: Python's
|
|
48
|
+
* `def f(): from x import Y`, Ruby's `def f; require 'x'; end`, a CommonJS
|
|
49
|
+
* `require()` in a body. Nothing marks those as dynamic, because
|
|
50
|
+
* syntactically they are ordinary imports; what defers them is WHERE they
|
|
51
|
+
* sit, so `scope-extractor.ts` decides it in Pass 3 and it is carried down
|
|
52
|
+
* — `ParsedImport` → `finalize-algorithm.ts` → the edge. A language whose
|
|
53
|
+
* imports do not execute never gets the tag no matter where one sits (Rust
|
|
54
|
+
* `use`, C/C++ `#include`; see
|
|
55
|
+
* `LanguageProvider.importsExecuteWhereWritten`).
|
|
56
|
+
* - `ImportEdge.typeOnly` — TypeScript `import type` / `import { type X }`.
|
|
57
|
+
* Neither of the other two sees it: the kind is the ordinary `named` /
|
|
58
|
+
* `alias`, and the statement sits at module top level like any other. Only
|
|
59
|
+
* the `type` keyword says it, so it is carried from the syntax down —
|
|
60
|
+
* `typescript/import-decomposer.ts` → `interpret.ts` → `finalize-algorithm.ts`.
|
|
61
|
+
*
|
|
62
|
+
* ## Why nothing here is derived from the scope tree
|
|
63
|
+
*
|
|
64
|
+
* `scopeTree` is used for exactly one thing: turning the map's key into the
|
|
65
|
+
* source `filePath`. It is NOT a place to ask where an import was written.
|
|
66
|
+
* `finalize-algorithm.ts:295` publishes every file's finalized edges as
|
|
67
|
+
* `linkedByScope.set(file.moduleScope, …)`, so the `imports` map this function
|
|
68
|
+
* receives holds one bucket per FILE, keyed by that file's `Module` scope —
|
|
69
|
+
* never by the scope an import was actually written in. A walk from such a key
|
|
70
|
+
* looking for an enclosing `Function` starts at a `Module` and answers `false`
|
|
71
|
+
* every time, for every import in the tree.
|
|
72
|
+
*
|
|
73
|
+
* That walk was here, and it never fired once. It looked correct in unit tests
|
|
74
|
+
* only because they hand-built `new Map([['fn', …]])`, a shape the pipeline
|
|
75
|
+
* cannot produce. Position now arrives as `runsOnlyWhenCalled`, decided where
|
|
76
|
+
* the position is still known.
|
|
77
|
+
*
|
|
78
|
+
* Tagging the reason is enough for the check query, which already filters
|
|
79
|
+
* non-runtime edges that way (`markdown-link`, Swift implicit module
|
|
80
|
+
* visibility) — no change to the persisted RELATION schema, no new property on
|
|
81
|
+
* the emitted `CodeRelation`. (`typeOnly` and `runsOnlyWhenCalled` are fields
|
|
82
|
+
* on the in-memory `ImportEdge`, which is never persisted; they end here.)
|
|
83
|
+
*
|
|
84
|
+
* ponytail: reason-string tagging rather than a typed relation property,
|
|
85
|
+
* because the one consumer already filters on `reason` and a property would
|
|
86
|
+
* touch the relation schema. If a second consumer ever needs to branch on this,
|
|
87
|
+
* promote it to a real field then.
|
|
88
|
+
*
|
|
89
|
+
* ## Precedence: the strongest runtime presence in a pair wins
|
|
90
|
+
*
|
|
91
|
+
* Emission dedupes by `(sourceFile, targetFile)`, so one edge has to speak for
|
|
92
|
+
* every import that reaches the pair. Rank them by how much of the dependency
|
|
93
|
+
* survives to run time — initializing > deferred > erased — and let the
|
|
94
|
+
* strongest win: the ranks ascend as presence weakens, so the pair keeps the
|
|
95
|
+
* LOWEST rank it sees ({@link PRESENCE_INITIALIZES} is 0). Inverting that
|
|
96
|
+
* comparison is the one mutation here that hides a real cycle rather than
|
|
97
|
+
* inventing a false one, which is why the suite pins it directly.
|
|
98
|
+
*
|
|
99
|
+
* - Any initializing import wins outright. One top-level `import { f }` beside
|
|
100
|
+
* an `await import()` and a dozen `import type`s is a real init dependency;
|
|
101
|
+
* reporting the pair as deferred or erased would HIDE a true cycle.
|
|
102
|
+
* - Deferred beats type-only. A pair with a function-local import plus some
|
|
103
|
+
* `import type`s does load the target at run time, so `(deferred)` is the
|
|
104
|
+
* honest label; `(type-only)` would claim the module never loads.
|
|
105
|
+
* - The two deferred signals rank the same. `import()` and a function-local
|
|
106
|
+
* import are the same claim about the emitted program — it loads, later —
|
|
107
|
+
* so a pair reached only by them is `(deferred)` either way.
|
|
108
|
+
*
|
|
109
|
+
* That also settles the mixed statement `import { type X, Y } from './m'`
|
|
110
|
+
* without the decomposer aggregating anything: `X` is erased, `Y` is not, and
|
|
111
|
+
* `Y` carries the pair. A statement is type-only exactly when every specifier
|
|
112
|
+
* it decomposes to is.
|
|
113
|
+
*
|
|
114
|
+
* Pairs are collected before anything is emitted so the ranking sees every
|
|
115
|
+
* contributing edge rather than whichever one arrived first. Insertion order
|
|
116
|
+
* into the map is first-seen order, so emission order is byte-identical to the
|
|
117
|
+
* single-pass form this replaced.
|
|
13
118
|
*/
|
|
14
119
|
import type { ImportEdge, ScopeId } from '../../../../_shared/index.js';
|
|
15
120
|
import type { KnowledgeGraph } from '../../../graph/types.js';
|
|
16
121
|
import type { ScopeResolutionIndexes } from '../../model/scope-resolution-indexes.js';
|
|
122
|
+
/**
|
|
123
|
+
* Reason suffix for a pair reachable only through imports that run later —
|
|
124
|
+
* `import()` and function-local imports.
|
|
125
|
+
*
|
|
126
|
+
* `check --cycles` matches this EXACTLY, so a provider that overrides the base
|
|
127
|
+
* reason keeps its deferred edges filterable — the suffix travels with it.
|
|
128
|
+
*/
|
|
129
|
+
export declare const DEFERRED_IMPORT_REASON_SUFFIX = " (deferred)";
|
|
130
|
+
/**
|
|
131
|
+
* Reason suffix for a pair reachable only through imports the compiler erases —
|
|
132
|
+
* TypeScript `import type` / `import { type X }`.
|
|
133
|
+
*
|
|
134
|
+
* A second suffix rather than a reuse of {@link DEFERRED_IMPORT_REASON_SUFFIX}:
|
|
135
|
+
* both are excluded from the cycle query, but "runs later" and "never runs" are
|
|
136
|
+
* opposite answers about the emitted program, and the reason string is the only
|
|
137
|
+
* place the graph records which one this pair is.
|
|
138
|
+
*/
|
|
139
|
+
export declare const TYPE_ONLY_IMPORT_REASON_SUFFIX = " (type-only)";
|
|
17
140
|
export declare function emitImportEdges(graph: KnowledgeGraph, imports: ReadonlyMap<ScopeId, readonly ImportEdge[]>, scopeTree: ScopeResolutionIndexes['scopeTree'], reason?: string): number;
|