gitnexus 1.6.10-rc.99 → 1.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +77 -2
- package/dist/core/index-freshness.js +109 -2
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +65 -19
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +14 -2
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +19 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +598 -16
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +77 -32
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/query.js +15 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +211 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.js +29 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +39 -1
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +39 -6
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +87 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +267 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +214 -29
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +309 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/error-D9MtuG9s.js +1 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +16 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EAEN,YAAY,CACJ,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,YACpB,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EAIZ,KAAK,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EAKZ,KAAK,EACL,eAAe,CACP,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
|
|
@@ -65,6 +65,9 @@ export const REL_TYPES = [
|
|
|
65
65
|
'WRAPS',
|
|
66
66
|
'QUERIES',
|
|
67
67
|
'INJECTS',
|
|
68
|
+
'CONDITIONAL_ON',
|
|
69
|
+
'DECLARES',
|
|
70
|
+
'ADVISED_BY',
|
|
68
71
|
// Taint/PDG substrate (issue #2080) — reserved edge types, emitted by no
|
|
69
72
|
// phase yet (CFG → M1, REACHING_DEF → M2, TAINTED/SANITIZES/TAINT_PATH →
|
|
70
73
|
// M3/M4). REACHING_DEF's variable name rides the relation's `reason` column.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,2EAA2E;IAC3E,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,SAAS;IACT,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,KAAK;IACL,cAAc;IACd,SAAS;IACT,WAAW;IACX,YAAY;IACZ,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,8EAA8E;IAC9E,KAAK;IACL,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,2EAA2E;IAC3E,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,YAAY;IACZ,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,KAAK;IACL,cAAc;IACd,SAAS;IACT,WAAW;IACX,YAAY;IACZ,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,8EAA8E;IAC9E,KAAK;IACL,eAAe;CACP,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-weights.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/evidence-weights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe;IAE1B,sCAAsC
|
|
1
|
+
{"version":3,"file":"evidence-weights.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/evidence-weights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe;IAE1B,sCAAsC;aACtC,KAAK,EAAE,IAAI;IACX,uCAAuC;aACvC,MAAM,EAAE,IAAI;IACZ,yCAAyC;aACzC,QAAQ,EAAE,GAAG;IACb,0CAA0C;aAC1C,SAAS,EAAE,GAAG;IACd,yCAAyC;aACzC,QAAQ,EAAE,GAAG;IAGb,uEAAuE;aACvE,kBAAkB,EAAE,CAAC,IAAI;IAGzB;;;;;OAKG;aACH,qBAAqB,YAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IAGlD,qEAAqE;aACrE,UAAU,EAAE,GAAG;IACf;uEACmE;aACnE,SAAS,EAAE,CAAG;IAGd,0DAA0D;aAC1D,oBAAoB,EAAE,GAAG;IACzB,uDAAuD;aACvD,iBAAiB,EAAE,CAAG;IACtB;uEACmE;aACnE,sBAAsB,EAAE,CAAC,IAAI;IAG7B,oDAAoD;aACpD,eAAe,EAAE,IAAI;IACrB,4EAA4E;aAC5E,UAAU,EAAE,GAAG;IAGf,kEAAkE;aAClE,uBAAuB,EAAE,IAAI;IAG7B;;;;;;OAMG;aACH,wBAAwB,EAAE,GAAG;CACrB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKjE"}
|
|
@@ -84,6 +84,11 @@ export interface FinalizeHooks {
|
|
|
84
84
|
* `numpy` is external to the workspace).
|
|
85
85
|
*/
|
|
86
86
|
resolveImportTarget(targetRaw: string, fromFile: string, workspaceIndex: WorkspaceIndex, parsedImport?: ParsedImport): string | readonly string[] | null;
|
|
87
|
+
/**
|
|
88
|
+
* Reclassify syntax that names an imported symbol as a namespace import
|
|
89
|
+
* after target resolution proves the symbol is itself a module.
|
|
90
|
+
*/
|
|
91
|
+
readonly isNamespaceImport?: (parsedImport: ParsedImport, targetFile: string, fromFile: string) => boolean;
|
|
87
92
|
/**
|
|
88
93
|
* For a wildcard `import * from M`, return the names visible in the
|
|
89
94
|
* exporting module scope `M`. The finalize pass looks each name up in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-algorithm.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIhG,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,GAC1B,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC;;;;;OAKG;IACH,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAAC;IAEjG;;;;;;OAMG;IACH,aAAa,CACX,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,EAAE,OAAO,GACb,SAAS,UAAU,EAAE,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC9D,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;IACpF,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,cAAc,CA8InF"}
|
|
1
|
+
{"version":3,"file":"finalize-algorithm.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/finalize-algorithm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIhG,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,GAC1B,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAC3B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;IAEb;;;;;OAKG;IACH,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAAC;IAEjG;;;;;;OAMG;IACH,aAAa,CACX,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,EAAE,OAAO,GACb,SAAS,UAAU,EAAE,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC9D,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;IACpF,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,cAAc,CA8InF"}
|
|
@@ -200,6 +200,8 @@ function makeEdgeDrafts(parsed, file, hooks, workspace) {
|
|
|
200
200
|
targetFile: null,
|
|
201
201
|
targetExportedName: extractExportedName(parsed),
|
|
202
202
|
kind: edgeKindFor(parsed),
|
|
203
|
+
...typeOnlyFor(parsed),
|
|
204
|
+
...runsOnlyWhenCalledFor(parsed),
|
|
203
205
|
linkStatus: 'unresolved',
|
|
204
206
|
};
|
|
205
207
|
return [
|
|
@@ -218,6 +220,12 @@ function makeEdgeDrafts(parsed, file, hooks, workspace) {
|
|
|
218
220
|
// and resolved-dynamic imports are terminal at the file level — no
|
|
219
221
|
// `targetDefId` needed since they materialize no `BindingRef`. Pre-
|
|
220
222
|
// finalize them here so the fixpoint loop skips them entirely.
|
|
223
|
+
// Annotated rather than inferred: `isArray`'s `arg is any[]` predicate widens
|
|
224
|
+
// the true branch to a MUTABLE array, and a resolver may hand back a cached,
|
|
225
|
+
// frozen candidate list (Kotlin's `dirChildren` buckets do). Only `.map` is
|
|
226
|
+
// wanted here, so pinning `readonly` makes an in-place `.sort()`/`.push()` —
|
|
227
|
+
// which would reorder that resolver's index for the rest of the run — a
|
|
228
|
+
// compile error rather than a runtime TypeError.
|
|
221
229
|
const targetFiles = Array.isArray(targetFile) ? targetFile : [targetFile];
|
|
222
230
|
const isFileLevelTerminal = parsed.kind === 'side-effect' || parsed.kind === 'dynamic-resolved';
|
|
223
231
|
return targetFiles.map((tf) => {
|
|
@@ -225,7 +233,11 @@ function makeEdgeDrafts(parsed, file, hooks, workspace) {
|
|
|
225
233
|
localName: extractLocalName(parsed),
|
|
226
234
|
targetFile: tf,
|
|
227
235
|
targetExportedName: extractExportedName(parsed),
|
|
228
|
-
kind:
|
|
236
|
+
kind: hooks.isNamespaceImport?.(parsed, tf, file.filePath) === true
|
|
237
|
+
? 'namespace'
|
|
238
|
+
: edgeKindFor(parsed),
|
|
239
|
+
...typeOnlyFor(parsed),
|
|
240
|
+
...runsOnlyWhenCalledFor(parsed),
|
|
229
241
|
};
|
|
230
242
|
return {
|
|
231
243
|
source: parsed,
|
|
@@ -242,6 +254,67 @@ function edgeKindFor(parsed) {
|
|
|
242
254
|
return 'wildcard-expanded';
|
|
243
255
|
return parsed.kind;
|
|
244
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Carry `ParsedImport.typeOnly` onto the edge — the erasure fact `check
|
|
259
|
+
* --cycles` needs and cannot re-derive, because `kind` is identical for the
|
|
260
|
+
* erased and the runtime spelling of the same import (`import type D` and
|
|
261
|
+
* `import D` both arrive as `alias`).
|
|
262
|
+
*
|
|
263
|
+
* `'typeOnly' in parsed` rather than a switch over the erasable kinds: only
|
|
264
|
+
* four variants declare the property, so `parsed.typeOnly` does not compile
|
|
265
|
+
* against the whole union, and `in` narrows it without naming them. That is
|
|
266
|
+
* also the safer shape — an enumeration has to be updated when a variant gains
|
|
267
|
+
* the property or the fact silently stops reaching the edge, while this form
|
|
268
|
+
* handles a new variant correctly whether or not it declares one.
|
|
269
|
+
*
|
|
270
|
+
* Returns a spreadable object rather than a `boolean` so an edge that is not
|
|
271
|
+
* type-only keeps the exact property set it had before this field existed.
|
|
272
|
+
* Every `finalized` edge is built by spreading `base`, so setting it here is
|
|
273
|
+
* enough for all of them.
|
|
274
|
+
*/
|
|
275
|
+
function typeOnlyFor(parsed) {
|
|
276
|
+
return 'typeOnly' in parsed && parsed.typeOnly === true ? { typeOnly: true } : {};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Re-carry both runtime-presence flags from an existing edge onto a derived
|
|
280
|
+
* one.
|
|
281
|
+
*
|
|
282
|
+
* `expandWildcard` builds each `wildcard-expanded` edge from scratch rather
|
|
283
|
+
* than spreading the source (three fields differ per exported name), so every
|
|
284
|
+
* field it does not name is dropped. That is exactly how both flags were lost
|
|
285
|
+
* once already. Naming the pair here keeps "these two travel together" in one
|
|
286
|
+
* place, so a third presence flag is added in one place too.
|
|
287
|
+
*/
|
|
288
|
+
function carriedPresenceFlags(edge) {
|
|
289
|
+
return {
|
|
290
|
+
...(edge.typeOnly === true ? { typeOnly: true } : {}),
|
|
291
|
+
...(edge.runsOnlyWhenCalled === true ? { runsOnlyWhenCalled: true } : {}),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Carry `ParsedImport.runsOnlyWhenCalled` onto the edge — the position fact
|
|
296
|
+
* `check --cycles` needs and, unlike every other property of an import, cannot
|
|
297
|
+
* look up for itself.
|
|
298
|
+
*
|
|
299
|
+
* The scope an import was written in does not survive to here:
|
|
300
|
+
* `FinalizeFile.parsedImports` is a flat per-file list, and Phase 4 publishes
|
|
301
|
+
* the finalized edges under `file.moduleScope` (see `linkedByScope.set` above),
|
|
302
|
+
* so the consumer's map is keyed by the Module scope for every file. Walking
|
|
303
|
+
* that map's key to look for an enclosing `Function` therefore always starts —
|
|
304
|
+
* and ends — at a `Module`. Only the extractor still knows, so the edge has to
|
|
305
|
+
* carry what it decided.
|
|
306
|
+
*
|
|
307
|
+
* No `in` guard, unlike {@link typeOnlyFor}: position is a property of where
|
|
308
|
+
* the statement sits, so every variant declares `runsOnlyWhenCalled` and
|
|
309
|
+
* `parsed.runsOnlyWhenCalled` compiles against the whole union. A new variant
|
|
310
|
+
* that omits it is a build break here, which is the right outcome.
|
|
311
|
+
*
|
|
312
|
+
* Returns a spreadable object rather than a `boolean` so an edge that is not
|
|
313
|
+
* deferred keeps the exact property set it had before this field existed.
|
|
314
|
+
*/
|
|
315
|
+
function runsOnlyWhenCalledFor(parsed) {
|
|
316
|
+
return parsed.runsOnlyWhenCalled === true ? { runsOnlyWhenCalled: true } : {};
|
|
317
|
+
}
|
|
245
318
|
function extractLocalName(parsed) {
|
|
246
319
|
switch (parsed.kind) {
|
|
247
320
|
case 'wildcard':
|
|
@@ -288,7 +361,7 @@ function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
|
288
361
|
// languages emit a synthetic module-def), pick it up as the `targetDefId`
|
|
289
362
|
// so consumers can reach the module as a symbol — but its absence is not
|
|
290
363
|
// a failure.
|
|
291
|
-
if (draft.
|
|
364
|
+
if (draft.base.kind === 'namespace') {
|
|
292
365
|
const moduleDef = findExportByName(targetModule.localDefs, extractExportedName(draft.source));
|
|
293
366
|
return {
|
|
294
367
|
...draft.base,
|
|
@@ -324,8 +397,10 @@ function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
|
324
397
|
// re-export inside the target's SCC surfaces it in a later iteration.
|
|
325
398
|
return null;
|
|
326
399
|
}
|
|
327
|
-
|
|
328
|
-
|
|
400
|
+
// Capped here too, not just inside the closure: this is the last hop, the
|
|
401
|
+
// one the emitted edge carries.
|
|
402
|
+
const viaFiles = extendVia(targetFile, followed.via);
|
|
403
|
+
const transitiveVia = draft.source.kind === 'reexport' || viaFiles.length > 1 ? viaFiles : undefined;
|
|
329
404
|
return {
|
|
330
405
|
...draft.base,
|
|
331
406
|
targetModuleScope: targetModule.moduleScope,
|
|
@@ -341,11 +416,19 @@ function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
|
341
416
|
* level import graph. Replaces the legacy recursive
|
|
342
417
|
* `followReexportChain` crawl with a bounded, stack-safe pass:
|
|
343
418
|
*
|
|
344
|
-
* 1. **Sub-graph.** Build a directed graph whose edges are
|
|
345
|
-
* `reexport` and `
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
* `
|
|
419
|
+
* 1. **Sub-graph.** Build a directed graph whose edges are `wildcard`
|
|
420
|
+
* drafts, `reexport` drafts, and `named`/`alias` drafts flagged
|
|
421
|
+
* `reexportsName` by their provider. `namespace`/`reexport-namespace`
|
|
422
|
+
* are terminal — their target def lives in `localDefs` — and are
|
|
423
|
+
* excluded on `base.kind`, after any `isNamespaceImport`
|
|
424
|
+
* reclassification.
|
|
425
|
+
*
|
|
426
|
+
* The flagged-named case is what languages with no dedicated
|
|
427
|
+
* re-export form need (today: Python, whose module-level
|
|
428
|
+
* `from m import x` both binds and republishes). For those providers
|
|
429
|
+
* the sub-graph is close to the file-level named-import graph, NOT a
|
|
430
|
+
* sparse barrel graph — measured ~20× more edges on the CPython
|
|
431
|
+
* stdlib — so read every bound below with that input class in mind.
|
|
349
432
|
* 2. **SCC condensation.** Run the same iterative `tarjanSccs` over
|
|
350
433
|
* the sub-graph. Output is in reverse-topological order (leaves
|
|
351
434
|
* first), so when we process an SCC every out-of-SCC neighbor
|
|
@@ -359,21 +442,34 @@ function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
|
359
442
|
* the cycle; first-wins precedence keeps the map monotone
|
|
360
443
|
* so the fixpoint converges in at most |SCC| hops).
|
|
361
444
|
*
|
|
362
|
-
* **Precedence semantics
|
|
445
|
+
* **Precedence semantics.**
|
|
363
446
|
* * Named re-exports take precedence over wildcards.
|
|
364
447
|
* * Within each kind, declaration order wins (first match for a
|
|
365
|
-
* given exported name is kept; later drafts skip).
|
|
448
|
+
* given exported name is kept; later drafts skip). This is only sound
|
|
449
|
+
* where the language makes a duplicate export illegal — true for TS
|
|
450
|
+
* and Rust `kind: 'reexport'`, false for the flagged-named form, where
|
|
451
|
+
* the module namespace rebinds (last write wins) and `if`/`try` pairs
|
|
452
|
+
* execute exactly one branch. For those, an in-file collision on the
|
|
453
|
+
* same published name with two different in-workspace targets is
|
|
454
|
+
* genuinely ambiguous and is dropped instead of guessed — see
|
|
455
|
+
* `collectAmbiguousReexports`.
|
|
366
456
|
*
|
|
367
457
|
* **Complexity.**
|
|
368
458
|
* * Pre-pass: O(V + E_re) for SCC, plus O(|SCC| × Σ drafts) per cyclic
|
|
369
|
-
* SCC.
|
|
370
|
-
*
|
|
371
|
-
*
|
|
459
|
+
* SCC. Tree-shaped barrel graphs collapse to O(E_re) total; the
|
|
460
|
+
* flagged-named input class does not — the CPython stdlib produces 10
|
|
461
|
+
* cyclic SCCs here where TypeScript-shaped input produced none.
|
|
462
|
+
* * Per-edge lookup at finalize time: O(1). Target `localDefs` are
|
|
463
|
+
* indexed by simple name on first use (`findExportByName`), so the
|
|
464
|
+
* per-hop cost is O(1) rather than a linear scan of the target file.
|
|
372
465
|
* * `transitiveVia` preserves the exact file path chain for diagnostics
|
|
373
466
|
* and graph provenance. Building those arrays copies the inherited path,
|
|
374
|
-
* which is
|
|
375
|
-
*
|
|
376
|
-
*
|
|
467
|
+
* which is Θ(depth²) in a single-name chain, and Θ(|SCC|²) for a cyclic
|
|
468
|
+
* SCC whose chain tracks the cycle. `MAX_REEXPORT_DEPTH = 100` bounded
|
|
469
|
+
* this until it was removed in `fc919ad6` for shallow TypeScript
|
|
470
|
+
* barrels; **nothing bounds it now**, and the flagged-named class feeds
|
|
471
|
+
* it far deeper input. Real `__init__.py` chains measure ≤ ~6, so this
|
|
472
|
+
* is a known unenforced assumption, not a live regression.
|
|
377
473
|
* * Pathological deep chains that previously needed
|
|
378
474
|
* `MAX_REEXPORT_DEPTH=100` to bound stack growth now resolve
|
|
379
475
|
* in full and are bounded only by available memory — the
|
|
@@ -383,15 +479,17 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
383
479
|
const closures = new Map();
|
|
384
480
|
for (const file of files)
|
|
385
481
|
closures.set(file.filePath, new Map());
|
|
386
|
-
// ── Step 1: build the re-export sub-graph (only resolvable
|
|
387
|
-
// reexport/
|
|
482
|
+
// ── Step 1: build the re-export sub-graph (only resolvable wildcard /
|
|
483
|
+
// reexport / flagged-named targets contribute edges), and collect the
|
|
484
|
+
// per-file ambiguous names in the same walk.
|
|
388
485
|
const subGraph = new Map();
|
|
486
|
+
const ambiguous = new Map();
|
|
389
487
|
for (const file of files) {
|
|
390
488
|
const targets = new Set();
|
|
391
489
|
const drafts = edgeIndex.get(file.filePath);
|
|
392
490
|
if (drafts !== undefined) {
|
|
393
491
|
for (const d of drafts) {
|
|
394
|
-
if (d
|
|
492
|
+
if (!contributesReexportEdge(d))
|
|
395
493
|
continue;
|
|
396
494
|
if (d.targetFile === null)
|
|
397
495
|
continue;
|
|
@@ -399,6 +497,7 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
399
497
|
continue;
|
|
400
498
|
targets.add(d.targetFile);
|
|
401
499
|
}
|
|
500
|
+
ambiguous.set(file.filePath, collectAmbiguousReexports(drafts, byFilePath));
|
|
402
501
|
}
|
|
403
502
|
subGraph.set(file.filePath, targets);
|
|
404
503
|
}
|
|
@@ -412,7 +511,7 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
412
511
|
if (!scc.isCycle) {
|
|
413
512
|
const filePath = scc.files[0];
|
|
414
513
|
if (filePath !== undefined) {
|
|
415
|
-
populateFileClosure(filePath, byFilePath, edgeIndex, closures);
|
|
514
|
+
populateFileClosure(filePath, byFilePath, edgeIndex, closures, ambiguous);
|
|
416
515
|
}
|
|
417
516
|
continue;
|
|
418
517
|
}
|
|
@@ -426,7 +525,7 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
426
525
|
progressed = false;
|
|
427
526
|
iter++;
|
|
428
527
|
for (const filePath of scc.files) {
|
|
429
|
-
if (populateFileClosure(filePath, byFilePath, edgeIndex, closures)) {
|
|
528
|
+
if (populateFileClosure(filePath, byFilePath, edgeIndex, closures, ambiguous)) {
|
|
430
529
|
progressed = true;
|
|
431
530
|
}
|
|
432
531
|
}
|
|
@@ -434,6 +533,96 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
434
533
|
}
|
|
435
534
|
return closures;
|
|
436
535
|
}
|
|
536
|
+
/**
|
|
537
|
+
* Does this import republish names from its target under the *importing* file,
|
|
538
|
+
* making it an edge in the re-export sub-graph?
|
|
539
|
+
*
|
|
540
|
+
* `reexport` and `wildcard` are the explicit forms; `named`/`alias` drafts
|
|
541
|
+
* flagged `reexportsName` cover providers whose ordinary import syntax also
|
|
542
|
+
* republishes (see that field on `ParsedImport` for the contract).
|
|
543
|
+
*
|
|
544
|
+
* Tested on `base.kind`, not `source.kind`: `isNamespaceImport` can reclassify
|
|
545
|
+
* a `named` draft to `namespace` (Python's `from . import submodule`), and a
|
|
546
|
+
* namespace import aliases the target *module* — it publishes no name, so
|
|
547
|
+
* admitting it would republish whatever def happens to share the module's
|
|
548
|
+
* simple name.
|
|
549
|
+
*/
|
|
550
|
+
function contributesReexportEdge(draft) {
|
|
551
|
+
if (draft.base.kind === 'namespace')
|
|
552
|
+
return false;
|
|
553
|
+
if (draft.source.kind === 'wildcard')
|
|
554
|
+
return true;
|
|
555
|
+
return isNamedReexport(draft);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Named (non-wildcard) re-export. The narrowed type lets `populateFileClosure`
|
|
559
|
+
* read `localName` (the name this file publishes) and `importedName` (the name
|
|
560
|
+
* the target exports) without re-discriminating on `kind`.
|
|
561
|
+
*/
|
|
562
|
+
function isNamedReexport(draft) {
|
|
563
|
+
if (draft.base.kind === 'namespace')
|
|
564
|
+
return false;
|
|
565
|
+
const source = draft.source;
|
|
566
|
+
if (source.kind === 'reexport')
|
|
567
|
+
return true;
|
|
568
|
+
return (source.kind === 'named' || source.kind === 'alias') && source.reexportsName === true;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Names this file publishes ambiguously, which the closure must decline to
|
|
572
|
+
* answer for rather than guess at.
|
|
573
|
+
*
|
|
574
|
+
* Declaration-order first-wins is sound only where a duplicate export is
|
|
575
|
+
* illegal — two `export { X } from …` is a TypeScript compile error, so the
|
|
576
|
+
* rule never fires. The flagged-named form has no such guarantee: CPython's
|
|
577
|
+
* module namespace rebinds, so
|
|
578
|
+
*
|
|
579
|
+
* from .v1 import Client # legacy, left behind
|
|
580
|
+
* from .v2 import Client # the actual public Client
|
|
581
|
+
*
|
|
582
|
+
* binds `v2`, and first-wins would attribute every `from pkg import Client` in
|
|
583
|
+
* the repo to the dead implementation. Last-wins is not the answer either —
|
|
584
|
+
* for the equally common `try:`/`except ImportError:` and `if
|
|
585
|
+
* sys.version_info` pairs exactly one branch runs, and which one is not
|
|
586
|
+
* decidable here. So both directions are wrong on real code and the entry is
|
|
587
|
+
* dropped: the importer stays unresolved, which is exactly the pre-#2864
|
|
588
|
+
* answer, and the file-level IMPORTS edge is unaffected.
|
|
589
|
+
*
|
|
590
|
+
* Computed once per file from data phase 0 froze (`edgeIndex`, `targetFile`)
|
|
591
|
+
* and never revised, so the closure map stays monotone and the `|SCC| + 1`
|
|
592
|
+
* fixpoint cap keeps the meaning it has above. A set that could grow mid-
|
|
593
|
+
* fixpoint would need retraction to propagate to files that already inherited
|
|
594
|
+
* the name, and would break both.
|
|
595
|
+
*
|
|
596
|
+
* Only two flagged drafts resolving to two *different in-workspace files*
|
|
597
|
+
* count. Duplicates of the same target are harmless, and an unresolvable
|
|
598
|
+
* target (`null` — the `try: import ujson / except: import json` shape, both
|
|
599
|
+
* external) never entered the closure to begin with.
|
|
600
|
+
*
|
|
601
|
+
* ponytail: named-vs-named only. Wildcard-vs-wildcard collisions are also
|
|
602
|
+
* first-wins today, but their inherited half depends on target closures that
|
|
603
|
+
* are still filling in, so detecting them needs a set that grows during the
|
|
604
|
+
* fixpoint — the thing this pre-pass exists to avoid.
|
|
605
|
+
*/
|
|
606
|
+
function collectAmbiguousReexports(drafts, byFilePath) {
|
|
607
|
+
const firstTarget = new Map();
|
|
608
|
+
const conflicting = new Set();
|
|
609
|
+
for (const draft of drafts) {
|
|
610
|
+
if (!isNamedReexport(draft))
|
|
611
|
+
continue;
|
|
612
|
+
if (draft.source.kind === 'reexport')
|
|
613
|
+
continue; // explicit form: duplicates are illegal upstream
|
|
614
|
+
const targetFile = draft.targetFile;
|
|
615
|
+
if (targetFile === null || !byFilePath.has(targetFile))
|
|
616
|
+
continue;
|
|
617
|
+
const localName = draft.source.localName;
|
|
618
|
+
const seen = firstTarget.get(localName);
|
|
619
|
+
if (seen === undefined)
|
|
620
|
+
firstTarget.set(localName, targetFile);
|
|
621
|
+
else if (seen !== targetFile)
|
|
622
|
+
conflicting.add(localName);
|
|
623
|
+
}
|
|
624
|
+
return conflicting;
|
|
625
|
+
}
|
|
437
626
|
/**
|
|
438
627
|
* Populate one file's re-export closure for one pass. Returns `true`
|
|
439
628
|
* iff the closure grew (signalling fixpoint progress to the caller).
|
|
@@ -448,7 +637,7 @@ function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
|
448
637
|
* targets on the first iteration; the outer fixpoint loop handles
|
|
449
638
|
* that by re-invoking this function.
|
|
450
639
|
*/
|
|
451
|
-
function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
640
|
+
function populateFileClosure(filePath, byFilePath, edgeIndex, closures, ambiguousByFile) {
|
|
452
641
|
const myClosure = closures.get(filePath);
|
|
453
642
|
if (myClosure === undefined)
|
|
454
643
|
return false;
|
|
@@ -456,10 +645,14 @@ function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
|
456
645
|
const drafts = edgeIndex.get(filePath);
|
|
457
646
|
if (drafts === undefined)
|
|
458
647
|
return false;
|
|
648
|
+
// Fixed for the whole run — see `collectAmbiguousReexports`. Consulted in
|
|
649
|
+
// both loops below: suppressing only the named one would let a later
|
|
650
|
+
// `import *` refill the name and reinstate an arbitrary winner.
|
|
651
|
+
const ambiguous = ambiguousByFile.get(filePath) ?? EMPTY_NAME_SET;
|
|
459
652
|
// Named re-exports — precedence over wildcards, declaration order
|
|
460
653
|
// first-wins for duplicates of the same exported name.
|
|
461
654
|
for (const draft of drafts) {
|
|
462
|
-
if (draft
|
|
655
|
+
if (!isNamedReexport(draft))
|
|
463
656
|
continue;
|
|
464
657
|
const targetFile = draft.targetFile;
|
|
465
658
|
if (targetFile === null)
|
|
@@ -468,7 +661,7 @@ function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
|
468
661
|
if (targetModule === undefined)
|
|
469
662
|
continue;
|
|
470
663
|
const localName = draft.source.localName;
|
|
471
|
-
if (myClosure.has(localName))
|
|
664
|
+
if (ambiguous.has(localName) || myClosure.has(localName))
|
|
472
665
|
continue;
|
|
473
666
|
const importedName = draft.source.importedName;
|
|
474
667
|
const direct = findExportByName(targetModule.localDefs, importedName);
|
|
@@ -480,7 +673,7 @@ function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
|
480
673
|
if (inherited !== undefined) {
|
|
481
674
|
myClosure.set(localName, {
|
|
482
675
|
def: inherited.def,
|
|
483
|
-
via:
|
|
676
|
+
via: extendVia(targetFile, inherited.via),
|
|
484
677
|
});
|
|
485
678
|
}
|
|
486
679
|
// Else: target's closure is still empty (in-SCC, awaiting next
|
|
@@ -500,24 +693,52 @@ function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
|
500
693
|
continue;
|
|
501
694
|
for (const def of targetModule.localDefs) {
|
|
502
695
|
const name = deriveSimpleName(def);
|
|
503
|
-
if (name === null || myClosure.has(name))
|
|
696
|
+
if (name === null || ambiguous.has(name) || myClosure.has(name))
|
|
504
697
|
continue;
|
|
505
698
|
myClosure.set(name, { def, via: Object.freeze([targetFile]) });
|
|
506
699
|
}
|
|
507
700
|
const targetClosure = closures.get(targetFile);
|
|
508
701
|
if (targetClosure !== undefined) {
|
|
509
702
|
for (const [name, entry] of targetClosure) {
|
|
510
|
-
if (myClosure.has(name))
|
|
703
|
+
if (ambiguous.has(name) || myClosure.has(name))
|
|
511
704
|
continue;
|
|
512
705
|
myClosure.set(name, {
|
|
513
706
|
def: entry.def,
|
|
514
|
-
via:
|
|
707
|
+
via: extendVia(targetFile, entry.via),
|
|
515
708
|
});
|
|
516
709
|
}
|
|
517
710
|
}
|
|
518
711
|
}
|
|
519
712
|
return myClosure.size > before;
|
|
520
713
|
}
|
|
714
|
+
/**
|
|
715
|
+
* Longest `transitiveVia` chain kept intact. Beyond this the tail is replaced
|
|
716
|
+
* by {@link VIA_TRUNCATED}, so the entry still says "this came through a long
|
|
717
|
+
* chain" without carrying it.
|
|
718
|
+
*
|
|
719
|
+
* Reinstates a bound the algorithm lost. Each hop copies the inherited path,
|
|
720
|
+
* so an uncapped chain is Θ(depth²) in both time and retained memory, and
|
|
721
|
+
* Θ(|SCC|²) for a cycle whose chain tracks it. `MAX_REEXPORT_DEPTH = 100`
|
|
722
|
+
* covered this until `fc919ad6` removed it — correctly, for the TypeScript
|
|
723
|
+
* barrels that were then the only input, which are shallow. Admitting
|
|
724
|
+
* flagged-named imports changes the input class, so the bound comes back.
|
|
725
|
+
*
|
|
726
|
+
* 32 against a measured real-world worst case of ~6 for `__init__.py` chains:
|
|
727
|
+
* five times the deepest chain anyone has, and it turns the quadratic into
|
|
728
|
+
* O(depth × 32). Safe to truncate because `ImportEdge.transitiveVia` has no
|
|
729
|
+
* production reader — it is diagnostic provenance, emitted and typed but not
|
|
730
|
+
* consumed by graph emission (`emitImportEdges` dedups on source→target and
|
|
731
|
+
* drops it).
|
|
732
|
+
*/
|
|
733
|
+
const MAX_VIA_LENGTH = 32;
|
|
734
|
+
const VIA_TRUNCATED = '…';
|
|
735
|
+
function extendVia(head, inherited) {
|
|
736
|
+
if (inherited.length + 1 <= MAX_VIA_LENGTH)
|
|
737
|
+
return Object.freeze([head, ...inherited]);
|
|
738
|
+
// Already truncated one hop down: re-truncating keeps the array at the cap
|
|
739
|
+
// rather than growing it by one per hop, which is the whole point.
|
|
740
|
+
return Object.freeze([head, ...inherited.slice(0, MAX_VIA_LENGTH - 2), VIA_TRUNCATED]);
|
|
741
|
+
}
|
|
521
742
|
/**
|
|
522
743
|
* O(1) lookup into a precomputed re-export closure. Replaces the legacy
|
|
523
744
|
* recursive `followReexportChain` traversal with a single map indexing.
|
|
@@ -572,17 +793,46 @@ function findExportByName(defs, name) {
|
|
|
572
793
|
//
|
|
573
794
|
// See `gitnexus/test/integration/resolvers/typescript-hof-callbacks.test.ts`
|
|
574
795
|
// for the cross-file regression this rule prevents.
|
|
575
|
-
|
|
796
|
+
return indexExportsByName(defs).get(name);
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* `simple name → winning def` for one file's `localDefs`, built once and
|
|
800
|
+
* memoized on the array itself.
|
|
801
|
+
*
|
|
802
|
+
* Every caller of `findExportByName` sits in a loop that revisits the same
|
|
803
|
+
* target files: the phase-3 fixpoint rescans a target once per iteration, and
|
|
804
|
+
* `populateFileClosure` scans once per admitted re-export — which for a
|
|
805
|
+
* provider setting `reexportsName` is every named import in the file, where it
|
|
806
|
+
* used to be zero. Keeping the scan turned that into O(edges × defs).
|
|
807
|
+
*
|
|
808
|
+
* Safe to key on identity because `FinalizeFile.localDefs` is documented static
|
|
809
|
+
* input that the fixpoint never mutates; a `WeakMap` ties each index to its
|
|
810
|
+
* array's lifetime with no cross-pass state to invalidate. Same shape as the
|
|
811
|
+
* `defById` map `materializeBindings` already builds for the same reason.
|
|
812
|
+
*/
|
|
813
|
+
const EXPORTS_BY_NAME = new WeakMap();
|
|
814
|
+
function indexExportsByName(defs) {
|
|
815
|
+
const cached = EXPORTS_BY_NAME.get(defs);
|
|
816
|
+
if (cached !== undefined)
|
|
817
|
+
return cached;
|
|
818
|
+
const index = new Map();
|
|
576
819
|
for (const d of defs) {
|
|
577
|
-
|
|
820
|
+
const name = deriveSimpleName(d);
|
|
821
|
+
if (name === null)
|
|
578
822
|
continue;
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
823
|
+
const existing = index.get(name);
|
|
824
|
+
// First match wins within a tier; a callable displaces a stored value
|
|
825
|
+
// shadow but never another callable — identical to the linear scan's
|
|
826
|
+
// "first callable if any, else first match".
|
|
827
|
+
if (existing === undefined)
|
|
828
|
+
index.set(name, d);
|
|
829
|
+
else if (!isCallableOrTypeLike(existing.type) && isCallableOrTypeLike(d.type))
|
|
830
|
+
index.set(name, d);
|
|
583
831
|
}
|
|
584
|
-
|
|
832
|
+
EXPORTS_BY_NAME.set(defs, index);
|
|
833
|
+
return index;
|
|
585
834
|
}
|
|
835
|
+
const EMPTY_NAME_SET = new Set();
|
|
586
836
|
const CALLABLE_OR_TYPE_LIKE = new Set([
|
|
587
837
|
'Function',
|
|
588
838
|
'Method',
|
|
@@ -649,6 +899,35 @@ function expandWildcard(edge, byFilePath, hooks, workspace) {
|
|
|
649
899
|
kind: 'wildcard-expanded',
|
|
650
900
|
targetModuleScope: edge.targetModuleScope,
|
|
651
901
|
targetDefId: def.nodeId,
|
|
902
|
+
// Every expanded edge inherits the presence facts of the ONE statement it
|
|
903
|
+
// came from. They are built fresh rather than spread from `edge` because
|
|
904
|
+
// `localName`, `targetExportedName` and `targetDefId` all differ per name
|
|
905
|
+
// — which is exactly how a property added to the wildcard edge upstream
|
|
906
|
+
// gets silently dropped here, and how `runsOnlyWhenCalled` was.
|
|
907
|
+
//
|
|
908
|
+
// `runsOnlyWhenCalled`: Ruby's `def f; require './m'; end` is one
|
|
909
|
+
// statement inside one method body — and every Ruby `require` is a
|
|
910
|
+
// wildcard, since the required file's whole surface becomes visible — so
|
|
911
|
+
// each name it brings in is bound only when `f` runs. Losing the flag
|
|
912
|
+
// here re-reports the pair as an initialization dependency and
|
|
913
|
+
// suppresses nothing — it INVENTS a cycle (`check --cycles`), which is
|
|
914
|
+
// why this is carried and not derived.
|
|
915
|
+
//
|
|
916
|
+
// Ruby is the reachable spelling. Python has no function-local
|
|
917
|
+
// `from x import *` — it is a SyntaxError — and Rust's `fn f() { use
|
|
918
|
+
// m::*; }`, which IS legal, is not deferred at all: `use` is a
|
|
919
|
+
// compile-time path alias, so the Rust provider opts out of the position
|
|
920
|
+
// rule (`LanguageProvider.importsExecuteWhereWritten`).
|
|
921
|
+
//
|
|
922
|
+
// `typeOnly`: unreachable today and deliberately kept. No provider emits
|
|
923
|
+
// a type-only wildcard — `reexport-wildcard` returns `kind: 'wildcard'`
|
|
924
|
+
// with no `typeOnly` because `export type *` is unparseable by the
|
|
925
|
+
// vendored grammar (documented on `ParsedImport`'s `wildcard` variant).
|
|
926
|
+
// It is propagated so the day that gap closes does not silently
|
|
927
|
+
// reintroduce this same defect for erasure. Do not delete it as dead
|
|
928
|
+
// code; `typeOnlyFor` is the gate that decides whether it can ever be
|
|
929
|
+
// set, and it is where the correspondence is enforced.
|
|
930
|
+
...carriedPresenceFlags(edge),
|
|
652
931
|
});
|
|
653
932
|
}
|
|
654
933
|
return expanded;
|