gitnexus 1.6.10-rc.98 → 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/class-extractors/configs/jvm.js +6 -6
- 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 +129 -44
- 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 +16 -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 +311 -16
- 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/jvm.js +2 -2
- 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 +322 -16
- package/dist/core/ingestion/utils/ast-helpers.js +727 -150
- 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 -3
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -435
- package/dist/storage/repo-manager.js +312 -215
- 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,9 +17,10 @@ import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js
|
|
|
17
17
|
import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
|
|
18
18
|
import { simpleKey } from '../../scope-resolution/graph-bridge/node-lookup.js';
|
|
19
19
|
import { typescriptProvider } from '../typescript.js';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
20
|
+
import { loadTsconfigIndex } from './tsconfig.js';
|
|
21
|
+
import { loadNodeWorkspacePackages, } from '../../import-resolvers/node-workspace-packages.js';
|
|
22
|
+
import { indexOnlyElementType } from '../../type-extractors/shared.js';
|
|
23
|
+
import { typescriptArityCompatibility, typescriptMergeBindings, resolveTsTarget } from './index.js';
|
|
23
24
|
import { getNuxtAutoImportEntry, hasNuxtAutoImports, loadNuxtAutoImports, } from './nuxt-auto-imports.js';
|
|
24
25
|
const TYPESCRIPT_TYPE_ONLY_BINDING_TYPES = new Set([
|
|
25
26
|
'Interface',
|
|
@@ -31,47 +32,32 @@ const TYPESCRIPT_TYPE_ONLY_BINDING_TYPES = new Set([
|
|
|
31
32
|
'Decorator',
|
|
32
33
|
]);
|
|
33
34
|
/**
|
|
34
|
-
* Build
|
|
35
|
-
* file list, the lower-cased file list, and the per-pass `resolveCache`
|
|
36
|
-
* across every import lookup in a single workspace pass. The
|
|
37
|
-
* orchestrator passes the same `ReadonlySet` reference for every call
|
|
38
|
-
* within a pass — we use that identity to detect when the workspace
|
|
39
|
-
* changes and recompute the derived state lazily.
|
|
35
|
+
* Build the `resolveImportTarget` adapter.
|
|
40
36
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
37
|
+
* No per-file-set memo any more: the suffix index it existed to amortize is
|
|
38
|
+
* gone with #2953. Real resolution derives nothing from the file list — every
|
|
39
|
+
* candidate comes from a config the repo declares, and checking one is a
|
|
40
|
+
* `Set.has` — so there is nothing left to cache per pass.
|
|
45
41
|
*/
|
|
46
42
|
function makeTsResolveImportTarget() {
|
|
47
|
-
let cached = null;
|
|
48
43
|
return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
49
|
-
if (cached === null || cached.key !== allFilePaths) {
|
|
50
|
-
const allFileList = Array.from(allFilePaths);
|
|
51
|
-
const normalizedFileList = allFileList.map((f) => f.toLowerCase());
|
|
52
|
-
cached = {
|
|
53
|
-
key: allFilePaths,
|
|
54
|
-
allFilePaths: new Set(allFilePaths),
|
|
55
|
-
allFileList,
|
|
56
|
-
normalizedFileList,
|
|
57
|
-
index: buildSuffixIndex(normalizedFileList, allFileList),
|
|
58
|
-
resolveCache: new Map(),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
44
|
const cfg = resolutionConfig;
|
|
62
|
-
|
|
45
|
+
return resolveTsTarget(targetRaw, {
|
|
63
46
|
fromFile,
|
|
64
|
-
allFilePaths
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
resolveCache: cached.resolveCache,
|
|
69
|
-
tsconfigPaths: cfg?.tsconfigPaths ?? null,
|
|
70
|
-
};
|
|
71
|
-
return resolveTsTarget(targetRaw, ws);
|
|
47
|
+
allFilePaths,
|
|
48
|
+
tsconfigs: cfg?.tsconfigs ?? null,
|
|
49
|
+
nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
|
|
50
|
+
});
|
|
72
51
|
};
|
|
73
52
|
}
|
|
74
53
|
const typescriptScopeResolver = {
|
|
54
|
+
// One hook, both routes. TypeScript exposes collection views as METHOD calls
|
|
55
|
+
// (`.values()`), which the call-expression branch already handles, so the
|
|
56
|
+
// accessor route yields nothing here — but it is now the same hook rather
|
|
57
|
+
// than a second one left undefined.
|
|
58
|
+
elementTypeOf: indexOnlyElementType,
|
|
59
|
+
// Construction is keyword-prefixed: `new Service(db).doWork()` (#2708).
|
|
60
|
+
constructionSyntax: { keyword: 'new' },
|
|
75
61
|
language: SupportedLanguages.TypeScript,
|
|
76
62
|
languageProvider: typescriptProvider,
|
|
77
63
|
importEdgeReason: 'typescript-scope: import',
|
|
@@ -83,7 +69,8 @@ const typescriptScopeResolver = {
|
|
|
83
69
|
// `nuxtAutoImports` is null for non-Nuxt projects (no .nuxt/imports.d.ts),
|
|
84
70
|
// so this adds zero overhead to ordinary TypeScript repos.
|
|
85
71
|
loadResolutionConfig: async (repoPath) => ({
|
|
86
|
-
|
|
72
|
+
tsconfigs: await loadTsconfigIndex(repoPath),
|
|
73
|
+
nodeWorkspacePackages: await loadNodeWorkspacePackages(repoPath),
|
|
87
74
|
nuxtAutoImports: await loadNuxtAutoImports(repoPath),
|
|
88
75
|
}),
|
|
89
76
|
// TypeScript declaration merging + LEGB: local > import > wildcard,
|
|
@@ -109,10 +96,10 @@ const typescriptScopeResolver = {
|
|
|
109
96
|
// boundaries and resolve chained member calls).
|
|
110
97
|
fieldFallbackOnMethodLookup: false,
|
|
111
98
|
propagatesReturnTypesAcrossImports: true,
|
|
112
|
-
// TypeScript uses `.values()` / `.keys()` method-call syntax for
|
|
113
|
-
//
|
|
114
|
-
// `
|
|
115
|
-
//
|
|
99
|
+
// TypeScript uses `.values()` / `.keys()` method-call syntax for collection
|
|
100
|
+
// views -- no property-style accessors like C#'s `Dictionary<K,V>.Values` --
|
|
101
|
+
// so `elementTypeOf` answers only the `index` route and lets the regular
|
|
102
|
+
// member-call branch handle the rest.
|
|
116
103
|
//
|
|
117
104
|
// `collapseMemberCallsByCallerTarget` left undefined (= false) --
|
|
118
105
|
// TypeScript legacy DAG emits one edge per call site, so
|
|
@@ -26,16 +26,6 @@ import type { CaptureMatch, ParsedImport, Scope, ScopeId, ScopeTree, TypeRef } f
|
|
|
26
26
|
* propagation.
|
|
27
27
|
*/
|
|
28
28
|
export declare function tsBindingScopeFor(decl: CaptureMatch, innermost: Scope, tree: ScopeTree): ScopeId | null;
|
|
29
|
-
/**
|
|
30
|
-
* Walk up the scope chain to find the first scope whose `kind` matches
|
|
31
|
-
* any of `kinds`. Returns the matching scope's id or `null` when no
|
|
32
|
-
* ancestor matches (e.g., a return type binding emitted outside any
|
|
33
|
-
* Module scope — shouldn't happen in well-formed input).
|
|
34
|
-
*
|
|
35
|
-
* Exported so language-specific hook wrappers (e.g. `jsBindingScopeFor`)
|
|
36
|
-
* can reuse it without duplicating the traversal logic.
|
|
37
|
-
*/
|
|
38
|
-
export declare function walkToScope(from: Scope, tree: ScopeTree, ...kinds: readonly Scope['kind'][]): ScopeId | null;
|
|
39
29
|
/**
|
|
40
30
|
* TypeScript imports are syntactically top-level: `import_statement` is
|
|
41
31
|
* legal only inside `program` (the module root). `namespace X { … }`
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* the provider's choice explicit rather than relying on "absence ==
|
|
5
5
|
* default" so reviewers don't have to re-derive the analysis.
|
|
6
6
|
*/
|
|
7
|
+
import { walkToScope } from '../../utils/scope-tree-walk.js';
|
|
7
8
|
// ─── bindingScopeFor ──────────────────────────────────────────────────────
|
|
8
9
|
/**
|
|
9
10
|
* TypeScript/JavaScript has block-scoped `let`/`const` (the innermost
|
|
@@ -38,6 +39,27 @@ export function tsBindingScopeFor(decl, innermost, tree) {
|
|
|
38
39
|
if (decl['@type-binding.parameter-property'] !== undefined) {
|
|
39
40
|
return walkToScope(innermost, tree, 'Class');
|
|
40
41
|
}
|
|
42
|
+
// `this.p = new Outer()` binds the FIELD, not a method-local, so the binding
|
|
43
|
+
// belongs on the class the way an annotated field's does — that is the only
|
|
44
|
+
// place `typeOfMemberOnClass` reads. Left on the innermost scope it would sit
|
|
45
|
+
// on the method's own Function scope and never be found (#2807). Same shape
|
|
46
|
+
// as the parameter-property branch above.
|
|
47
|
+
//
|
|
48
|
+
// Gated on the marker the `this.<field> = new …` pattern emits, never on
|
|
49
|
+
// `@type-binding.constructor` at large: that capture also fires for
|
|
50
|
+
// `const o = new Outer()` inside a method, and hoisting THOSE to the class
|
|
51
|
+
// would take method locals out of their own scope and mistype them.
|
|
52
|
+
//
|
|
53
|
+
// This walk is UNCONDITIONAL by design, and stays correct only because the
|
|
54
|
+
// marker's producers are bounded: the query nests the pattern under
|
|
55
|
+
// `class_body → method_definition → statement_block`, and `emitTsScopeCaptures`
|
|
56
|
+
// drops the static-method case. So `this` here provably IS an instance of the
|
|
57
|
+
// class this lands on, and a Class ancestor always exists — no `walkToScope`
|
|
58
|
+
// null-fallback onto some unrelated innermost scope. Anything that widens the
|
|
59
|
+
// marker's producers has to re-establish both, or restore the guard here.
|
|
60
|
+
if (decl['@type-binding.this-field'] !== undefined) {
|
|
61
|
+
return walkToScope(innermost, tree, 'Class');
|
|
62
|
+
}
|
|
41
63
|
// `var` declarations: hoist to nearest enclosing Function or Module.
|
|
42
64
|
const variable = decl['@declaration.variable'];
|
|
43
65
|
if (variable !== undefined && isVarDeclaration(variable.text)) {
|
|
@@ -51,28 +73,6 @@ export function tsBindingScopeFor(decl, innermost, tree) {
|
|
|
51
73
|
// needed.
|
|
52
74
|
return null;
|
|
53
75
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Walk up the scope chain to find the first scope whose `kind` matches
|
|
56
|
-
* any of `kinds`. Returns the matching scope's id or `null` when no
|
|
57
|
-
* ancestor matches (e.g., a return type binding emitted outside any
|
|
58
|
-
* Module scope — shouldn't happen in well-formed input).
|
|
59
|
-
*
|
|
60
|
-
* Exported so language-specific hook wrappers (e.g. `jsBindingScopeFor`)
|
|
61
|
-
* can reuse it without duplicating the traversal logic.
|
|
62
|
-
*/
|
|
63
|
-
export function walkToScope(from, tree, ...kinds) {
|
|
64
|
-
let cur = from;
|
|
65
|
-
const kindSet = new Set(kinds);
|
|
66
|
-
while (cur !== undefined) {
|
|
67
|
-
if (kindSet.has(cur.kind))
|
|
68
|
-
return cur.id;
|
|
69
|
-
const parentId = cur.parent ?? null;
|
|
70
|
-
if (parentId === null)
|
|
71
|
-
break;
|
|
72
|
-
cur = tree.getScope(parentId);
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
76
|
/** `var x = 1;` vs `let x = 1;` / `const x = 1;`. The capture's text
|
|
77
77
|
* starts at the outer declaration's `startIndex` in source, which is
|
|
78
78
|
* the keyword's first character — no leading whitespace possible. */
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real `tsconfig.json` loading for module resolution (#2953).
|
|
3
|
+
*
|
|
4
|
+
* The previous loader (`language-config.ts:loadTsconfigPaths`) was built to feed
|
|
5
|
+
* a heuristic, and it shows: it reads three filenames at the repo ROOT only,
|
|
6
|
+
* gives up unless `compilerOptions.paths` exists, keeps only `targets[0]` of
|
|
7
|
+
* each mapping, and treats a pattern as a plain prefix. That is enough to make
|
|
8
|
+
* a guess look plausible and not enough to resolve anything correctly:
|
|
9
|
+
*
|
|
10
|
+
* - a monorepo has one tsconfig PER PACKAGE, and `apps/web/tsconfig.json` is
|
|
11
|
+
* what governs `apps/web/src/main.ts` — the root config governs nothing;
|
|
12
|
+
* - `extends` is how essentially every real config is written, and the
|
|
13
|
+
* `baseUrl` / `paths` almost always live in the extended base;
|
|
14
|
+
* - `baseUrl` alone (no `paths`) is a complete resolution rule on its own, and
|
|
15
|
+
* it is exactly the rule that makes `import 'src/utils/foo'` legal — the
|
|
16
|
+
* case the old suffix matcher was really standing in for;
|
|
17
|
+
* - `paths` maps a pattern to an ORDERED LIST of targets, tried in order.
|
|
18
|
+
*
|
|
19
|
+
* So this module answers the question TypeScript actually asks: for THIS file,
|
|
20
|
+
* what are `baseUrl` and `paths`?
|
|
21
|
+
*/
|
|
22
|
+
/** One `paths` entry, pattern and targets kept in declaration order. */
|
|
23
|
+
export interface TsPathMapping {
|
|
24
|
+
/** The pattern as written, e.g. `@/*`, `@app/*`, `exact`. */
|
|
25
|
+
readonly pattern: string;
|
|
26
|
+
/** Targets as written, relative to `baseUrl`. Tried in order. */
|
|
27
|
+
readonly targets: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
/** The resolution-relevant part of one resolved tsconfig. */
|
|
30
|
+
export interface TsconfigScope {
|
|
31
|
+
/** Repo-relative directory the config governs (the tsconfig's own directory). */
|
|
32
|
+
readonly dir: string;
|
|
33
|
+
/**
|
|
34
|
+
* Repo-relative `baseUrl`, or `null` when the config declares none.
|
|
35
|
+
*
|
|
36
|
+
* `null` is not the same as `'.'`: without `baseUrl`, TypeScript does NOT
|
|
37
|
+
* resolve non-relative specifiers against the project at all (they are
|
|
38
|
+
* package lookups), and `paths` targets are resolved against the tsconfig's
|
|
39
|
+
* own directory instead.
|
|
40
|
+
*/
|
|
41
|
+
readonly baseUrl: string | null;
|
|
42
|
+
readonly paths: readonly TsPathMapping[];
|
|
43
|
+
}
|
|
44
|
+
/** Every tsconfig in the repo, indexed so the nearest one to a file wins. */
|
|
45
|
+
export interface TsconfigIndex {
|
|
46
|
+
/** Deepest-first, so the first `dir` that prefixes a file path governs it. */
|
|
47
|
+
readonly scopes: readonly TsconfigScope[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The config governing `filePath` — the nearest tsconfig at or above it.
|
|
51
|
+
*
|
|
52
|
+
* TypeScript resolves a file against the project that includes it; the nearest
|
|
53
|
+
* enclosing tsconfig is the faithful approximation of that without evaluating
|
|
54
|
+
* `include`/`exclude` globs, and it is what makes a monorepo's per-package
|
|
55
|
+
* `baseUrl` apply to that package's files instead of the root's.
|
|
56
|
+
*/
|
|
57
|
+
export declare function tsconfigFor(index: TsconfigIndex | null, filePath: string): TsconfigScope | null;
|
|
58
|
+
/** Load every tsconfig in the repo, resolving `extends` chains. */
|
|
59
|
+
export declare function loadTsconfigIndex(repoRoot: string): Promise<TsconfigIndex | null>;
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real `tsconfig.json` loading for module resolution (#2953).
|
|
3
|
+
*
|
|
4
|
+
* The previous loader (`language-config.ts:loadTsconfigPaths`) was built to feed
|
|
5
|
+
* a heuristic, and it shows: it reads three filenames at the repo ROOT only,
|
|
6
|
+
* gives up unless `compilerOptions.paths` exists, keeps only `targets[0]` of
|
|
7
|
+
* each mapping, and treats a pattern as a plain prefix. That is enough to make
|
|
8
|
+
* a guess look plausible and not enough to resolve anything correctly:
|
|
9
|
+
*
|
|
10
|
+
* - a monorepo has one tsconfig PER PACKAGE, and `apps/web/tsconfig.json` is
|
|
11
|
+
* what governs `apps/web/src/main.ts` — the root config governs nothing;
|
|
12
|
+
* - `extends` is how essentially every real config is written, and the
|
|
13
|
+
* `baseUrl` / `paths` almost always live in the extended base;
|
|
14
|
+
* - `baseUrl` alone (no `paths`) is a complete resolution rule on its own, and
|
|
15
|
+
* it is exactly the rule that makes `import 'src/utils/foo'` legal — the
|
|
16
|
+
* case the old suffix matcher was really standing in for;
|
|
17
|
+
* - `paths` maps a pattern to an ORDERED LIST of targets, tried in order.
|
|
18
|
+
*
|
|
19
|
+
* So this module answers the question TypeScript actually asks: for THIS file,
|
|
20
|
+
* what are `baseUrl` and `paths`?
|
|
21
|
+
*/
|
|
22
|
+
import fs from 'fs/promises';
|
|
23
|
+
import path from 'path';
|
|
24
|
+
import { isHardcodedIgnoredDirectoryAtPath } from '../../../../config/ignore-service.js';
|
|
25
|
+
import { logger } from '../../../logger.js';
|
|
26
|
+
const SCAN_MAX_DIRS = 20_000;
|
|
27
|
+
const SCAN_MAX_DEPTH = 24;
|
|
28
|
+
/** Guard against an `extends` cycle or a pathological chain. */
|
|
29
|
+
const MAX_EXTENDS_DEPTH = 16;
|
|
30
|
+
/**
|
|
31
|
+
* The config governing `filePath` — the nearest tsconfig at or above it.
|
|
32
|
+
*
|
|
33
|
+
* TypeScript resolves a file against the project that includes it; the nearest
|
|
34
|
+
* enclosing tsconfig is the faithful approximation of that without evaluating
|
|
35
|
+
* `include`/`exclude` globs, and it is what makes a monorepo's per-package
|
|
36
|
+
* `baseUrl` apply to that package's files instead of the root's.
|
|
37
|
+
*/
|
|
38
|
+
export function tsconfigFor(index, filePath) {
|
|
39
|
+
if (index === null)
|
|
40
|
+
return null;
|
|
41
|
+
for (const scope of index.scopes) {
|
|
42
|
+
if (scope.dir === '')
|
|
43
|
+
return scope;
|
|
44
|
+
if (filePath.startsWith(`${scope.dir}/`))
|
|
45
|
+
return scope;
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/** Load every tsconfig in the repo, resolving `extends` chains. */
|
|
50
|
+
export async function loadTsconfigIndex(repoRoot) {
|
|
51
|
+
const files = await findTsconfigFiles(repoRoot);
|
|
52
|
+
if (files.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
const ranked = [];
|
|
55
|
+
for (const absPath of files) {
|
|
56
|
+
const options = await readCompilerOptions(absPath, 0);
|
|
57
|
+
if (options === null)
|
|
58
|
+
continue;
|
|
59
|
+
// `readCompilerOptions` resolves both to ABSOLUTE paths against whichever
|
|
60
|
+
// config in the `extends` chain declared them, which is the only way the
|
|
61
|
+
// chain stays unambiguous. Rebasing to repo-relative happens once, here.
|
|
62
|
+
const baseUrl = options.baseUrl === undefined ? null : repoRelative(repoRoot, options.baseUrl);
|
|
63
|
+
const paths = (options.paths ?? []).map((mapping) => ({
|
|
64
|
+
pattern: mapping.pattern,
|
|
65
|
+
targets: mapping.targets.map((t) => rebaseTarget(repoRoot, t)),
|
|
66
|
+
}));
|
|
67
|
+
// A config declaring NEITHER is kept, not skipped. Dropping it let
|
|
68
|
+
// `tsconfigFor` fall through to an enclosing config, so a package whose own
|
|
69
|
+
// tsconfig declares no `baseUrl` — meaning its non-relative specifiers are
|
|
70
|
+
// package lookups — silently inherited the repo root's aliases instead.
|
|
71
|
+
// An empty scope is the accurate answer for such a file, and only a scope
|
|
72
|
+
// can express it.
|
|
73
|
+
ranked.push({
|
|
74
|
+
scope: { dir: repoRelative(repoRoot, path.dirname(absPath)), baseUrl, paths },
|
|
75
|
+
rank: configRank(path.basename(absPath)),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (ranked.length === 0)
|
|
79
|
+
return null;
|
|
80
|
+
// Deepest first, because `tsconfigFor` takes the first match and it must be
|
|
81
|
+
// the most specific config rather than whichever the walk reached first.
|
|
82
|
+
//
|
|
83
|
+
// Then by filename rank WITHIN a directory, which is the half that is easy to
|
|
84
|
+
// miss: `tsconfig.json` and `tsconfig.base.json` routinely sit side by side,
|
|
85
|
+
// and the base exists to be extended, not to govern. Reading whichever the
|
|
86
|
+
// directory listing returned first made a config's own `paths` invisible
|
|
87
|
+
// whenever its base happened to be listed earlier.
|
|
88
|
+
ranked.sort((a, b) => b.scope.dir.length - a.scope.dir.length || a.rank - b.rank);
|
|
89
|
+
return { scopes: ranked.map((entry) => entry.scope) };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Precedence among configs sharing a directory: the project config governs, and
|
|
93
|
+
* everything else is a base or a variant that exists to be extended.
|
|
94
|
+
*/
|
|
95
|
+
function configRank(fileName) {
|
|
96
|
+
if (fileName === 'tsconfig.json')
|
|
97
|
+
return 0;
|
|
98
|
+
if (fileName === 'jsconfig.json')
|
|
99
|
+
return 1;
|
|
100
|
+
return 2;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Read one tsconfig and merge in whatever it `extends`.
|
|
104
|
+
*
|
|
105
|
+
* Rebasing happens per FILE, before merging, because `extends` does not rebase
|
|
106
|
+
* `baseUrl`: a base config at `configs/tsconfig.base.json` declaring
|
|
107
|
+
* `"baseUrl": "."` means `configs/`, even when extended from `apps/web`. Doing
|
|
108
|
+
* the rebase at read time is what keeps that true through the chain.
|
|
109
|
+
*/
|
|
110
|
+
async function readCompilerOptions(absPath, depth, repoRootHint) {
|
|
111
|
+
if (depth > MAX_EXTENDS_DEPTH) {
|
|
112
|
+
logger.warn(`[typescript] tsconfig extends chain too deep at ${absPath}; ignoring the rest`);
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
let parsed;
|
|
116
|
+
try {
|
|
117
|
+
parsed = parseJsonc(await fs.readFile(absPath, 'utf-8'));
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const dir = path.dirname(absPath);
|
|
123
|
+
// Read what this config extends FIRST: `paths` targets resolve against the
|
|
124
|
+
// EFFECTIVE `baseUrl`, which a config declaring `paths` alone inherits from
|
|
125
|
+
// its base. Resolving them against this config's own directory instead would
|
|
126
|
+
// load the right alias pattern and point every target at the wrong place.
|
|
127
|
+
const inherited = await readExtended(parsed.extends, dir, depth, repoRootHint);
|
|
128
|
+
const own = {};
|
|
129
|
+
const compilerOptions = parsed.compilerOptions;
|
|
130
|
+
if (compilerOptions !== null && typeof compilerOptions === 'object') {
|
|
131
|
+
const opts = compilerOptions;
|
|
132
|
+
if (typeof opts.baseUrl === 'string') {
|
|
133
|
+
own.baseUrl = path.resolve(dir, opts.baseUrl);
|
|
134
|
+
}
|
|
135
|
+
if (opts.paths !== null && typeof opts.paths === 'object' && !Array.isArray(opts.paths)) {
|
|
136
|
+
// tsc resolves `paths` targets against the effective `baseUrl` — this
|
|
137
|
+
// config's own if it declares one, otherwise the inherited one — and
|
|
138
|
+
// against the config's own directory only when neither exists. Doing it
|
|
139
|
+
// here, per file, is what keeps an `extends` chain unambiguous: by the
|
|
140
|
+
// time these merge, every target is already absolute.
|
|
141
|
+
const pathsBase = own.baseUrl ?? inherited?.baseUrl ?? dir;
|
|
142
|
+
own.paths = [];
|
|
143
|
+
for (const [pattern, targets] of Object.entries(opts.paths)) {
|
|
144
|
+
if (!Array.isArray(targets))
|
|
145
|
+
continue;
|
|
146
|
+
const asStrings = targets
|
|
147
|
+
.filter((t) => typeof t === 'string')
|
|
148
|
+
.map((t) => path.resolve(pathsBase, t));
|
|
149
|
+
if (asStrings.length > 0)
|
|
150
|
+
own.paths.push({ pattern, targets: asStrings });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Own options win over inherited ones — that is what `extends` means. `paths`
|
|
155
|
+
// is replaced wholesale rather than merged, matching tsc.
|
|
156
|
+
return {
|
|
157
|
+
...(inherited ?? {}),
|
|
158
|
+
...own,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** Follow `extends`, which may be a string or (TS 5+) an array, base-first. */
|
|
162
|
+
async function readExtended(value, fromDir, depth, repoRootHint) {
|
|
163
|
+
const specs = typeof value === 'string' ? [value] : Array.isArray(value) ? value : [];
|
|
164
|
+
let merged = null;
|
|
165
|
+
for (const spec of specs) {
|
|
166
|
+
if (typeof spec !== 'string')
|
|
167
|
+
continue;
|
|
168
|
+
const resolved = await resolveExtendsTarget(spec, fromDir);
|
|
169
|
+
if (resolved === null)
|
|
170
|
+
continue;
|
|
171
|
+
const options = await readCompilerOptions(resolved, depth + 1, repoRootHint);
|
|
172
|
+
if (options === null)
|
|
173
|
+
continue;
|
|
174
|
+
// Later entries win over earlier ones, per tsc's array semantics.
|
|
175
|
+
merged = { ...(merged ?? {}), ...options };
|
|
176
|
+
}
|
|
177
|
+
return merged;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* An `extends` value is either a path or a package name.
|
|
181
|
+
*
|
|
182
|
+
* The package form (`"extends": "@tsconfig/node20/tsconfig.json"`,
|
|
183
|
+
* `"@acme/tsconfig"`) lives in `node_modules`, which this tool deliberately
|
|
184
|
+
* does NOT index — it is dependency code, not the repository's own. But not
|
|
185
|
+
* indexing it is different from not READING it, and the distinction matters
|
|
186
|
+
* here: a shared internal base config is exactly where a monorepo puts the
|
|
187
|
+
* `paths` its packages import through, so refusing to open it loses aliases
|
|
188
|
+
* that the repository genuinely declares.
|
|
189
|
+
*
|
|
190
|
+
* So the file is read from disk when it is there, walking `node_modules` up
|
|
191
|
+
* from the extending config the way Node does. When it is absent — an
|
|
192
|
+
* un-installed checkout, which is a shape a static analyser must expect and a
|
|
193
|
+
* compiler may refuse — the answer is `null`, and the caller keeps whatever the
|
|
194
|
+
* extending config declared itself. That degrades to fewer resolutions, never
|
|
195
|
+
* to invented ones.
|
|
196
|
+
*/
|
|
197
|
+
async function resolveExtendsTarget(spec, fromDir) {
|
|
198
|
+
if (spec.startsWith('.') || path.isAbsolute(spec)) {
|
|
199
|
+
return firstReadableConfig(path.resolve(fromDir, spec));
|
|
200
|
+
}
|
|
201
|
+
for (const modulesDir of nodeModulesChain(fromDir)) {
|
|
202
|
+
const found = await firstReadableConfig(path.join(modulesDir, spec));
|
|
203
|
+
if (found !== null)
|
|
204
|
+
return found;
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
/** `<dir>/node_modules`, then each ancestor's, the way Node resolves. */
|
|
209
|
+
function* nodeModulesChain(fromDir) {
|
|
210
|
+
let dir = fromDir;
|
|
211
|
+
for (;;) {
|
|
212
|
+
if (path.basename(dir) !== 'node_modules')
|
|
213
|
+
yield path.join(dir, 'node_modules');
|
|
214
|
+
const parent = path.dirname(dir);
|
|
215
|
+
if (parent === dir)
|
|
216
|
+
return;
|
|
217
|
+
dir = parent;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/** The first spelling of `base` that is a readable file. */
|
|
221
|
+
async function firstReadableConfig(base) {
|
|
222
|
+
for (const candidate of [base, `${base}.json`, path.join(base, 'tsconfig.json')]) {
|
|
223
|
+
try {
|
|
224
|
+
const stat = await fs.stat(candidate);
|
|
225
|
+
if (stat.isFile())
|
|
226
|
+
return candidate;
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
// try the next spelling
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
async function findTsconfigFiles(repoRoot) {
|
|
235
|
+
const found = [];
|
|
236
|
+
const queue = [{ dir: repoRoot, depth: 0 }];
|
|
237
|
+
let dirsScanned = 0;
|
|
238
|
+
while (queue.length > 0 && dirsScanned < SCAN_MAX_DIRS) {
|
|
239
|
+
const { dir, depth } = queue.shift();
|
|
240
|
+
dirsScanned++;
|
|
241
|
+
let entries;
|
|
242
|
+
try {
|
|
243
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
for (const entry of entries) {
|
|
249
|
+
if (entry.isDirectory()) {
|
|
250
|
+
const childDir = path.join(dir, entry.name);
|
|
251
|
+
if (isHardcodedIgnoredDirectoryAtPath(repoRoot, childDir))
|
|
252
|
+
continue;
|
|
253
|
+
if (depth < SCAN_MAX_DEPTH)
|
|
254
|
+
queue.push({ dir: childDir, depth: depth + 1 });
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (!entry.isFile())
|
|
258
|
+
continue;
|
|
259
|
+
// `tsconfig.json`, `tsconfig.app.json`, `jsconfig.json`, … — any of them
|
|
260
|
+
// can carry the `baseUrl`/`paths` that governs its directory.
|
|
261
|
+
if (/^(ts|js)config(\..+)?\.json$/.test(entry.name)) {
|
|
262
|
+
found.push(path.join(dir, entry.name));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return found;
|
|
267
|
+
}
|
|
268
|
+
/** Strip comments and trailing commas — tsconfig is JSONC, not JSON. */
|
|
269
|
+
function parseJsonc(raw) {
|
|
270
|
+
const withoutComments = raw
|
|
271
|
+
.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)|(\/\*[\s\S]*?\*\/)/gm, (match, line, block) => line !== undefined || block !== undefined ? '' : match)
|
|
272
|
+
.replace(/,(\s*[}\]])/g, '$1');
|
|
273
|
+
return JSON.parse(withoutComments);
|
|
274
|
+
}
|
|
275
|
+
function repoRelative(repoRoot, absDir) {
|
|
276
|
+
const rel = path.relative(repoRoot, absDir).split(path.sep).join('/');
|
|
277
|
+
return rel === '.' || rel === '' ? '' : rel;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* A `paths` target rebased to repo-relative, keeping any trailing `*`.
|
|
281
|
+
*
|
|
282
|
+
* `path.resolve` swallows the wildcard into a path segment, so it is stripped
|
|
283
|
+
* before resolving and re-appended after — the `*` is a substitution marker,
|
|
284
|
+
* not a directory named `*`.
|
|
285
|
+
*/
|
|
286
|
+
function rebaseTarget(repoRoot, absTarget) {
|
|
287
|
+
// `/repo/src/*` must come back as `src/*`, not `src*`: stripping only the
|
|
288
|
+
// star leaves a trailing slash that `path.relative` then eats.
|
|
289
|
+
const suffix = absTarget.endsWith('/*') ? '/*' : absTarget.endsWith('*') ? '*' : '';
|
|
290
|
+
const base = suffix === '' ? absTarget : absTarget.slice(0, -suffix.length);
|
|
291
|
+
return `${repoRelative(repoRoot, base)}${suffix}`;
|
|
292
|
+
}
|