gitnexus 1.6.10-rc.21 → 1.6.10-rc.211
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 +212 -22
- package/dist/_shared/graph/types.d.ts +27 -8
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +4 -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 +19 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +23 -10
- 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/callable-flow-site.d.ts +110 -0
- package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +6 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +316 -37
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +124 -1
- 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 +297 -5
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +10 -2
- package/dist/cli/ai-context.js +128 -61
- 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 +25 -114
- package/dist/cli/analyze.js +194 -36
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +23 -0
- package/dist/cli/doctor.js +72 -9
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.d.ts +23 -1
- package/dist/cli/eval-server.js +128 -9
- 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 +23 -2
- package/dist/cli/help-i18n.js +3 -0
- package/dist/cli/i18n/en.d.ts +17 -8
- package/dist/cli/i18n/en.js +19 -8
- package/dist/cli/i18n/resources.d.ts +26 -8
- package/dist/cli/i18n/zh-CN.d.ts +9 -0
- package/dist/cli/i18n/zh-CN.js +17 -8
- package/dist/cli/index.js +16 -9
- package/dist/cli/lazy-action.d.ts +7 -0
- package/dist/cli/lazy-action.js +27 -0
- package/dist/cli/mcp.js +6 -3
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +30 -7
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/skill-gen.js +88 -18
- package/dist/cli/standard-skills.d.ts +76 -0
- package/dist/cli/standard-skills.js +45 -0
- package/dist/cli/status.d.ts +4 -1
- package/dist/cli/status.js +57 -4
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +75 -7
- package/dist/cli/uninstall.js +7 -2
- package/dist/cli/wiki.d.ts +1 -0
- package/dist/cli/wiki.js +59 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +31 -4
- package/dist/core/analysis-features.d.ts +21 -0
- package/dist/core/analysis-features.js +59 -0
- package/dist/core/analyzer-identity.d.ts +154 -0
- package/dist/core/analyzer-identity.js +2158 -0
- package/dist/core/augmentation/engine.js +95 -76
- 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/embedder.d.ts +3 -2
- package/dist/core/embeddings/embedder.js +8 -5
- package/dist/core/embeddings/embedding-identity.d.ts +11 -0
- package/dist/core/embeddings/embedding-identity.js +24 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +24 -1
- package/dist/core/embeddings/embedding-pipeline.js +341 -19
- package/dist/core/embeddings/http-client.d.ts +10 -2
- package/dist/core/embeddings/http-client.js +282 -47
- package/dist/core/embeddings/node-module-compat.d.ts +4 -2
- package/dist/core/embeddings/node-module-compat.js +4 -2
- package/dist/core/embeddings/onnxruntime-common-resolver.js +5 -5
- package/dist/core/embeddings/onnxruntime-node-resolver.js +2 -2
- package/dist/core/embeddings/runtime-install.js +1 -1
- package/dist/core/git-staleness.js +1 -1
- 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.js +5 -27
- package/dist/core/group/cross-impact.d.ts +21 -0
- package/dist/core/group/cross-impact.js +128 -15
- package/dist/core/group/cross-trace.js +27 -16
- package/dist/core/group/extractors/http-patterns/java.js +91 -14
- package/dist/core/group/extractors/http-patterns/node.js +19 -0
- 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/service.js +10 -1
- package/dist/core/group/storage.js +2 -33
- package/dist/core/group/types.d.ts +18 -0
- 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 +80 -0
- package/dist/core/index-freshness.js +120 -0
- 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 +29 -0
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +88 -83
- package/dist/core/ingestion/di-extractors/index.d.ts +22 -34
- package/dist/core/ingestion/di-extractors/index.js +17 -18
- package/dist/core/ingestion/di-extractors/spring.d.ts +27 -5
- package/dist/core/ingestion/di-extractors/spring.js +87 -3
- 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/emit-references.js +4 -0
- package/dist/core/ingestion/filesystem-walker.js +16 -12
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +9 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +41 -0
- 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-candidates.d.ts +30 -0
- package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +27 -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/config-bindings.d.ts +24 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +48 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +379 -0
- 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 +428 -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 +27 -8
- 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 +20 -1
- package/dist/core/ingestion/language-config.js +18 -23
- package/dist/core/ingestion/language-provider.d.ts +133 -7
- package/dist/core/ingestion/languages/c/captures.js +63 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/query.js +17 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +26 -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/captures.js +93 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +34 -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 +222 -3
- 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 +62 -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 +44 -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 +686 -16
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
- 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 +8 -1
- package/dist/core/ingestion/languages/go/captures.js +142 -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 +7 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +25 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +38 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +124 -0
- package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
- package/dist/core/ingestion/languages/java/captures.js +321 -49
- 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/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/java/package-facts.js +9 -0
- package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
- package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
- package/dist/core/ingestion/languages/java/query.js +39 -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 +35 -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-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -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-config-bindings.d.ts +23 -0
- package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +20 -0
- package/dist/core/ingestion/languages/java/spring-di.js +160 -0
- 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 +76 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +278 -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 +232 -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-facts.d.ts +35 -0
- package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.js +197 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +40 -3
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +111 -8
- package/dist/core/ingestion/languages/kotlin/captures.js +112 -0
- 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/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
- package/dist/core/ingestion/languages/kotlin/query.js +47 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +36 -3
- 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-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -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 +20 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +299 -0
- 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/kotlin.js +5 -6
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +359 -51
- package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
- package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
- package/dist/core/ingestion/languages/php/import-target.js +229 -7
- package/dist/core/ingestion/languages/php/interpret.js +10 -0
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
- 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.d.ts +3 -4
- package/dist/core/ingestion/languages/python/captures.js +53 -5
- 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 -3
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +17 -2
- package/dist/core/ingestion/languages/python/receiver-binding.js +192 -2
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
- package/dist/core/ingestion/languages/python/simple-hooks.js +9 -5
- package/dist/core/ingestion/languages/ruby/captures.js +200 -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 +52 -1
- package/dist/core/ingestion/languages/rust/interpret.js +18 -0
- 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 +48 -6
- package/dist/core/ingestion/languages/rust/range-binding.d.ts +1 -11
- package/dist/core/ingestion/languages/rust/range-binding.js +149 -63
- 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 +99 -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 +288 -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/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/nuxt-auto-imports.js +2 -1
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +340 -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 +291 -0
- package/dist/core/ingestion/languages/typescript.js +87 -1
- 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/parsing-processor.js +32 -1
- package/dist/core/ingestion/pipeline-phases/di.d.ts +8 -33
- package/dist/core/ingestion/pipeline-phases/di.js +275 -157
- package/dist/core/ingestion/pipeline-phases/index.d.ts +3 -0
- package/dist/core/ingestion/pipeline-phases/index.js +3 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +158 -3
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +11 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +102 -7
- package/dist/core/ingestion/pipeline-phases/routes.js +56 -10
- 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/spring-config.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +27 -3
- package/dist/core/ingestion/pipeline.js +62 -12
- 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 +78 -6
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +25 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +864 -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/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 +109 -24
- 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 +617 -59
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +381 -22
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +15 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +53 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +275 -41
- 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 +56 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +130 -32
- 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 +46 -3
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +64 -0
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1233 -0
- 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 +19 -4
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +160 -4
- 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 +64 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +118 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +109 -8
- 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 +34 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +82 -38
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +61 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +384 -48
- 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 +968 -56
- 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/taint/typescript-model.js +34 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +688 -5
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/jvm.js +17 -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 +311 -14
- package/dist/core/ingestion/utils/ast-helpers.js +745 -48
- 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 +153 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +928 -0
- 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 +72 -0
- package/dist/core/ingestion/workers/callable-id.js +116 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +409 -39
- package/dist/core/ingestion/workers/worker-pool.d.ts +34 -27
- package/dist/core/ingestion/workers/worker-pool.js +133 -25
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +80 -17
- package/dist/core/lbug/extension-load-error.d.ts +2 -2
- package/dist/core/lbug/extension-load-error.js +44 -27
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +32 -7
- 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 +337 -3
- package/dist/core/lbug/lbug-adapter.js +772 -67
- package/dist/core/lbug/lbug-config.d.ts +93 -6
- package/dist/core/lbug/lbug-config.js +269 -9
- package/dist/core/lbug/native-check.d.ts +39 -0
- package/dist/core/lbug/native-check.js +323 -46
- 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 +23 -1
- package/dist/core/lbug/pool-adapter.js +115 -7
- 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 +162 -3
- package/dist/core/lbug/schema.js +392 -157
- package/dist/core/lbug/sidecar-recovery.d.ts +1 -0
- package/dist/core/lbug/sidecar-recovery.js +1 -1
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
- package/dist/core/platform/capabilities.d.ts +0 -1
- package/dist/core/platform/capabilities.js +12 -7
- package/dist/core/run-analyze.d.ts +150 -3
- package/dist/core/run-analyze.js +1562 -151
- 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 +167 -2
- package/dist/core/search/fts-indexes.js +264 -10
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +37 -5
- package/dist/core/wiki/llm-client.js +88 -17
- 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/http-transport.d.ts +5 -0
- package/dist/mcp/http-transport.js +19 -5
- 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 +3 -0
- package/dist/mcp/local/bean-metadata.js +46 -0
- package/dist/mcp/local/local-backend.d.ts +167 -6
- package/dist/mcp/local/local-backend.js +1756 -405
- 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/output-budget.d.ts +5 -0
- package/dist/mcp/output-budget.js +52 -0
- package/dist/mcp/read-only-policy.d.ts +12 -0
- package/dist/mcp/read-only-policy.js +102 -0
- package/dist/mcp/repository-policy.d.ts +35 -0
- package/dist/mcp/repository-policy.js +333 -0
- package/dist/mcp/resources.js +34 -7
- package/dist/mcp/server.d.ts +5 -2
- package/dist/mcp/server.js +48 -18
- package/dist/mcp/tools.d.ts +8 -8
- package/dist/mcp/tools.js +91 -20
- package/dist/server/analyze-job.d.ts +40 -2
- package/dist/server/analyze-job.js +30 -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 +3 -2
- package/dist/server/analyze-worker-core.js +15 -3
- 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/analyze-worker.js +29 -6
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +200 -155
- 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/mcp-http.d.ts +1 -1
- package/dist/server/mcp-http.js +4 -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/server/upload-ingest.js +2 -1
- package/dist/server/validation.js +2 -1
- 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 +165 -0
- package/dist/storage/git.js +352 -3
- package/dist/storage/index-lock.d.ts +83 -0
- package/dist/storage/index-lock.js +654 -0
- package/dist/storage/parse-cache.js +482 -1
- package/dist/storage/parsedfile-store.d.ts +8 -0
- package/dist/storage/parsedfile-store.js +235 -1
- package/dist/storage/repo-manager.d.ts +29 -309
- package/dist/storage/repo-manager.js +187 -165
- 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 +20 -12
- package/scripts/cross-platform-shard.ts +143 -0
- package/scripts/cross-platform-tests.ts +94 -0
- package/scripts/ensure-fts.ts +14 -3
- package/scripts/run-cross-platform.ts +36 -10
- package/scripts/sync-plugin-manifests.mjs +192 -0
- 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-lfg/README.md +55 -0
- package/skills/gitnexus-lfg/SKILL.md +86 -0
- package/skills/gitnexus-plan/README.md +147 -0
- package/skills/gitnexus-plan/SKILL.md +348 -0
- package/skills/gitnexus-plan/references/context-ledger.md +137 -0
- package/skills/gitnexus-plan/references/context-pack.md +126 -0
- package/skills/gitnexus-plan/references/evidence-provenance.md +309 -0
- package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
- package/skills/gitnexus-plan/references/plan-template.md +201 -0
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2366 -0
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +279 -0
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/README.md +71 -0
- package/skills/gitnexus-work/SKILL.md +272 -0
- package/skills/gitnexus-work/references/evidence-provenance.md +309 -0
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2366 -0
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-DIzEQ1JJ.js +626 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +132 -0
- package/web/assets/{c4Diagram-Y2BXMSZH-DOXVs7-C.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +6 -6
- 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-6L755F7B-CMhLBxi2.js +1 -0
- package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +2 -0
- package/web/assets/chunk-A7VWPJGB-B4O3oQdQ.js +1 -0
- 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-SZD42YQK-ijyKKVr1.js +70 -0
- package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +231 -0
- 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-VJFVEZTB-CX66F2ep.js +206 -0
- 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-KFBZAVDW-Dfmf_4ti.js +3 -0
- 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/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-B4eB4dNZ.js → index-BBNl0qfX.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-BLjivjXL.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +6 -6
- package/web/assets/{journeyDiagram-M6C3CM3L-Cetgs3NH.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +6 -6
- package/web/assets/{kanban-definition-75IXJCU3-DMlCaIpf.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +27 -27
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-B4GbXQBc.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +29 -29
- package/web/assets/node-Ct_zna8U.js +8 -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/preload-helper-Czpn1I53.js +1 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-B1TQnlm0.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +6 -6
- 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-RASO5HTO-B-l8InpK.js +84 -0
- package/web/assets/sankeyDiagram-F32LOJ6L-Kd7zjJgX.js +40 -0
- package/web/assets/sdk-CzHHH8tD.js +37 -0
- package/web/assets/sequenceDiagram-URATNSBD-BlcdY9DS.js +162 -0
- 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-WJXWRH4I-DUfp1R3E.js +120 -0
- 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 +17 -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/skills/gitnexus-pr-review.md +0 -163
- package/web/assets/ProcessFlowModal-Dna7GkwO.js +0 -22
- package/web/assets/agent-DNYDy-KA.js +0 -660
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +0 -36
- package/web/assets/blockDiagram-7IZFK4PR-Dut1BpTV.js +0 -132
- package/web/assets/chunk-2T2R6R2M-pkw2oXHH.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-zxhDWgyF.js +0 -124
- package/web/assets/chunk-7J6CGLKN-AmkN8jJN.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-INKRHTLW-D9BM9HWZ.js +0 -70
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-tD2F6wxK.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-LCXTWHL2-Ba9JK-6F.js +0 -231
- package/web/assets/chunk-LII3EMHJ-EGx-eBIu.js +0 -1
- package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +0 -1
- package/web/assets/chunk-QA3QBVWF-D4cSJBf6.js +0 -2
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RG4AUYOV-OqBBMwuQ.js +0 -206
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BJusEiGe.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-BCpUlARQ.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +0 -2
- package/web/assets/chunk-ZXARS5L4-BI_qR2Nm.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +0 -4
- package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +0 -43
- package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +0 -24
- package/web/assets/diagram-HNR7UZ2L-DxKW2a2Y.js +0 -3
- package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-D0fvpWEX.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-TzODrLzv.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.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-DIPVUIQ6.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- 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-D3YC_xyg.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/requirementDiagram-JXO7QTGE-f8wczLQf.js +0 -84
- package/web/assets/sankeyDiagram-URQDO5SZ-BTxzG5j0.js +0 -40
- package/web/assets/sequenceDiagram-VS2MUI6T-DuamM-IR.js +0 -162
- package/web/assets/src-BNCXICdA.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +0 -1
- package/web/assets/timeline-definition-O6YCAMPW-07BR8R8G.js +0 -120
- 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-BQX2ossk.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-CGIJBBiK.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-B3HNMuWp.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -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,291 @@
|
|
|
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 { isHardcodedIgnoredDirectory } 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
|
+
if (isHardcodedIgnoredDirectory(entry.name))
|
|
251
|
+
continue;
|
|
252
|
+
if (depth < SCAN_MAX_DEPTH)
|
|
253
|
+
queue.push({ dir: path.join(dir, entry.name), depth: depth + 1 });
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (!entry.isFile())
|
|
257
|
+
continue;
|
|
258
|
+
// `tsconfig.json`, `tsconfig.app.json`, `jsconfig.json`, … — any of them
|
|
259
|
+
// can carry the `baseUrl`/`paths` that governs its directory.
|
|
260
|
+
if (/^(ts|js)config(\..+)?\.json$/.test(entry.name)) {
|
|
261
|
+
found.push(path.join(dir, entry.name));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return found;
|
|
266
|
+
}
|
|
267
|
+
/** Strip comments and trailing commas — tsconfig is JSONC, not JSON. */
|
|
268
|
+
function parseJsonc(raw) {
|
|
269
|
+
const withoutComments = raw
|
|
270
|
+
.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)|(\/\*[\s\S]*?\*\/)/gm, (match, line, block) => line !== undefined || block !== undefined ? '' : match)
|
|
271
|
+
.replace(/,(\s*[}\]])/g, '$1');
|
|
272
|
+
return JSON.parse(withoutComments);
|
|
273
|
+
}
|
|
274
|
+
function repoRelative(repoRoot, absDir) {
|
|
275
|
+
const rel = path.relative(repoRoot, absDir).split(path.sep).join('/');
|
|
276
|
+
return rel === '.' || rel === '' ? '' : rel;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* A `paths` target rebased to repo-relative, keeping any trailing `*`.
|
|
280
|
+
*
|
|
281
|
+
* `path.resolve` swallows the wildcard into a path segment, so it is stripped
|
|
282
|
+
* before resolving and re-appended after — the `*` is a substitution marker,
|
|
283
|
+
* not a directory named `*`.
|
|
284
|
+
*/
|
|
285
|
+
function rebaseTarget(repoRoot, absTarget) {
|
|
286
|
+
// `/repo/src/*` must come back as `src/*`, not `src*`: stripping only the
|
|
287
|
+
// star leaves a trailing slash that `path.relative` then eats.
|
|
288
|
+
const suffix = absTarget.endsWith('/*') ? '/*' : absTarget.endsWith('*') ? '*' : '';
|
|
289
|
+
const base = suffix === '' ? absTarget : absTarget.slice(0, -suffix.length);
|
|
290
|
+
return `${repoRelative(repoRoot, base)}${suffix}`;
|
|
291
|
+
}
|
|
@@ -9,7 +9,51 @@ import { SupportedLanguages } from '../../../_shared/index.js';
|
|
|
9
9
|
import { defineLanguage } from '../language-provider.js';
|
|
10
10
|
import { createClassExtractor } from '../class-extractors/generic.js';
|
|
11
11
|
import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
|
|
12
|
-
import { createLeadingDocDescriptionExtractor } from '../utils/ast-helpers.js';
|
|
12
|
+
import { createLeadingDocDescriptionExtractor, isCjsDefaultExportAssignment, isPrototypeMemberAssignmentNode, } from '../utils/ast-helpers.js';
|
|
13
|
+
import { cjsExportedNameFor, isModuleLevelThisAssignment, isModuleLevelThisExport, isShadowedCjsExportAssignmentNode, } from './typescript/cjs-export-assignment.js';
|
|
14
|
+
const rootOf = (node) => node.tree?.rootNode;
|
|
15
|
+
/** `exports.X = fn` where the module already declares `X` — see #2723. */
|
|
16
|
+
const isShadowedCjsExportNode = (node) => {
|
|
17
|
+
const root = rootOf(node);
|
|
18
|
+
return root !== undefined && isShadowedCjsExportAssignmentNode(node, root);
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Label for a `<receiver>.<member> = <function>` capture (#2723 follow-up).
|
|
22
|
+
*
|
|
23
|
+
* The member-assignment queries match ANY identifier receiver, because an
|
|
24
|
+
* `exports` alias (`const e = exports; e.foo = fn`) cannot be pinned in the
|
|
25
|
+
* query. Everything that is not a recognised shape is dropped HERE — without
|
|
26
|
+
* that, every `obj.handler = function () {}` in every JS/TS file would emit a
|
|
27
|
+
* spurious top-level `Function` named `handler`.
|
|
28
|
+
*
|
|
29
|
+
* Recognised: a CJS export (direct, `module.exports`, or via a module-scope
|
|
30
|
+
* alias) stays a Function; a prototype or `this` member becomes a Method; a
|
|
31
|
+
* CJS export shadowing a name the module already declares emits nothing.
|
|
32
|
+
*/
|
|
33
|
+
const memberAssignmentLabel = (node) => {
|
|
34
|
+
const root = rootOf(node);
|
|
35
|
+
// Module-level `this.X = fn` in CommonJS IS `module.exports.X = fn`, so it
|
|
36
|
+
// is an exported Function, not an instance member. Checked before the
|
|
37
|
+
// Method branch, which would otherwise claim every `this` receiver.
|
|
38
|
+
if (root !== undefined && isModuleLevelThisExport(node, root))
|
|
39
|
+
return 'Function';
|
|
40
|
+
// `module.exports = fn` — the module itself is the callable.
|
|
41
|
+
if (isCjsDefaultExportAssignment(node))
|
|
42
|
+
return 'Function';
|
|
43
|
+
// A module-level `this` member in ESM or a no-signal file is neither an
|
|
44
|
+
// export (top-level `this` is undefined) nor an instance member. Emitting a
|
|
45
|
+
// Method there minted an ownerless node (#2729 review F13).
|
|
46
|
+
if (isModuleLevelThisAssignment(node))
|
|
47
|
+
return null;
|
|
48
|
+
if (isPrototypeMemberAssignmentNode(node))
|
|
49
|
+
return 'Method';
|
|
50
|
+
if (isShadowedCjsExportNode(node))
|
|
51
|
+
return null;
|
|
52
|
+
const value = node.childForFieldName('right');
|
|
53
|
+
if (root === undefined || value === null)
|
|
54
|
+
return null;
|
|
55
|
+
return cjsExportedNameFor(value, root) !== null ? 'Function' : null;
|
|
56
|
+
};
|
|
13
57
|
import { createTypeScriptCfgVisitor } from '../cfg/visitors/typescript.js';
|
|
14
58
|
import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
|
|
15
59
|
import { tsExportChecker } from '../export-detection.js';
|
|
@@ -28,6 +72,12 @@ import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/
|
|
|
28
72
|
import { ARRAY_METHOD_HOC_BLOCKLIST_SET, DEFAULT_EXPORT_IDENTIFIER_BLOCKLIST_SET, deriveDefaultExportHocName, } from '../ts-js-hoc-utils.js';
|
|
29
73
|
import { emitTsScopeCaptures, interpretTsImport, interpretTsTypeBinding, tsBindingScopeFor, tsImportOwningScope, tsReceiverBinding, typescriptMergeBindings, typescriptArityCompatibility, resolveTsImportTarget, } from './typescript/index.js';
|
|
30
74
|
import { emitJsScopeCaptures, interpretJsImport, interpretJsTypeBinding, jsBindingScopeFor, jsImportOwningScope, jsReceiverBinding, jsMergeBindings, jsArityCompatibility, } from './javascript/index.js';
|
|
75
|
+
import { extractDispatchGuardRoutes } from '../route-extractors/dispatch-guard.js';
|
|
76
|
+
import { extractDataRouteTableRoutes } from '../route-extractors/data-route-table.js';
|
|
77
|
+
const extractJsTsRoutes = (...args) => [
|
|
78
|
+
...extractDispatchGuardRoutes(...args),
|
|
79
|
+
...extractDataRouteTableRoutes(...args),
|
|
80
|
+
];
|
|
31
81
|
/**
|
|
32
82
|
* TypeScript/JavaScript: arrow_function and function_expression are
|
|
33
83
|
* anonymous AST nodes — they take their name from the surrounding
|
|
@@ -250,6 +300,15 @@ export const BUILT_INS = new Set([
|
|
|
250
300
|
'toString',
|
|
251
301
|
'valueOf',
|
|
252
302
|
]);
|
|
303
|
+
/**
|
|
304
|
+
* `this` is the only receiver keyword JavaScript and TypeScript bind, and it
|
|
305
|
+
* is bound by every function form except an arrow (#2701). The query files
|
|
306
|
+
* tag those forms with `@receiver-owner.this`; this hook just reads the tag,
|
|
307
|
+
* so the node-type list stays in the one place that already names grammar
|
|
308
|
+
* nodes. See `Scope.ownsReceivers` for what the marker does to the walk.
|
|
309
|
+
*/
|
|
310
|
+
const TS_OWNED_RECEIVERS = new Set(['this']);
|
|
311
|
+
const tsScopeOwnsReceivers = (match) => match['@receiver-owner.this'] === undefined ? undefined : TS_OWNED_RECEIVERS;
|
|
253
312
|
export const typescriptProvider = defineLanguage({
|
|
254
313
|
id: SupportedLanguages.TypeScript,
|
|
255
314
|
extensions: ['.ts', '.tsx'],
|
|
@@ -278,6 +337,7 @@ export const typescriptProvider = defineLanguage({
|
|
|
278
337
|
],
|
|
279
338
|
treeSitterQueries: TYPESCRIPT_QUERIES,
|
|
280
339
|
typeConfig: typescriptConfig,
|
|
340
|
+
scopeOwnsReceivers: tsScopeOwnsReceivers,
|
|
281
341
|
exportChecker: tsExportChecker,
|
|
282
342
|
importResolver: createImportResolver(typescriptImportConfig),
|
|
283
343
|
callExtractor: createCallExtractor(typescriptCallConfig),
|
|
@@ -294,6 +354,19 @@ export const typescriptProvider = defineLanguage({
|
|
|
294
354
|
wrapperNodeTypes: ['export_statement'],
|
|
295
355
|
}),
|
|
296
356
|
builtInNames: BUILT_INS,
|
|
357
|
+
// Member-assignment shapes are not free functions (#2723 follow-up). The
|
|
358
|
+
// capture arrives anchored on the assignment, so the shape is decided from
|
|
359
|
+
// the left-hand side:
|
|
360
|
+
// - `Foo.prototype.bar = fn` / `this.bar = fn` -> a Method
|
|
361
|
+
// - a CJS export shadowing a name the module already declares -> no node
|
|
362
|
+
// at all, since the scope declaration that would reach it is suppressed
|
|
363
|
+
// too (an orphan `Function` twin beside `class Dup {}` otherwise).
|
|
364
|
+
// Every other `definition.function` capture keeps its default label.
|
|
365
|
+
labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
|
|
366
|
+
? defaultLabel
|
|
367
|
+
: functionNode.type === 'assignment_expression'
|
|
368
|
+
? memberAssignmentLabel(functionNode)
|
|
369
|
+
: defaultLabel,
|
|
297
370
|
// ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
|
|
298
371
|
// TypeScript is the third migration after Python and C#. See
|
|
299
372
|
// ./typescript/index.ts for the full per-hook rationale and the
|
|
@@ -314,6 +387,10 @@ export const typescriptProvider = defineLanguage({
|
|
|
314
387
|
receiverBinding: tsReceiverBinding,
|
|
315
388
|
arityCompatibility: typescriptArityCompatibility,
|
|
316
389
|
resolveImportTarget: resolveTsImportTarget,
|
|
390
|
+
// A raw `node:http` server declares its routes by comparing the request path
|
|
391
|
+
// to a literal; nothing else in this pipeline can see that shape. TS and JS
|
|
392
|
+
// share the grammar, so they share the extractor.
|
|
393
|
+
extractDecoratorRoutes: extractJsTsRoutes,
|
|
317
394
|
});
|
|
318
395
|
export const javascriptProvider = defineLanguage({
|
|
319
396
|
id: SupportedLanguages.JavaScript,
|
|
@@ -343,6 +420,7 @@ export const javascriptProvider = defineLanguage({
|
|
|
343
420
|
],
|
|
344
421
|
treeSitterQueries: JAVASCRIPT_QUERIES,
|
|
345
422
|
typeConfig: typescriptConfig,
|
|
423
|
+
scopeOwnsReceivers: tsScopeOwnsReceivers,
|
|
346
424
|
exportChecker: tsExportChecker,
|
|
347
425
|
importResolver: createImportResolver(javascriptImportConfig),
|
|
348
426
|
callExtractor: createCallExtractor(javascriptCallConfig),
|
|
@@ -359,6 +437,12 @@ export const javascriptProvider = defineLanguage({
|
|
|
359
437
|
wrapperNodeTypes: ['export_statement'],
|
|
360
438
|
}),
|
|
361
439
|
builtInNames: BUILT_INS,
|
|
440
|
+
// Member-assignment shapes — see the TypeScript provider above.
|
|
441
|
+
labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
|
|
442
|
+
? defaultLabel
|
|
443
|
+
: functionNode.type === 'assignment_expression'
|
|
444
|
+
? memberAssignmentLabel(functionNode)
|
|
445
|
+
: defaultLabel,
|
|
362
446
|
// ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
|
|
363
447
|
// JavaScript is the fourth migration after Python, C#, and TypeScript.
|
|
364
448
|
// Hooks are thin wrappers over the TypeScript implementations where
|
|
@@ -375,4 +459,6 @@ export const javascriptProvider = defineLanguage({
|
|
|
375
459
|
mergeBindings: (_scope, bindings) => jsMergeBindings(bindings),
|
|
376
460
|
receiverBinding: jsReceiverBinding,
|
|
377
461
|
arityCompatibility: jsArityCompatibility,
|
|
462
|
+
// See the TypeScript provider above.
|
|
463
|
+
extractDecoratorRoutes: extractJsTsRoutes,
|
|
378
464
|
});
|
|
@@ -1,27 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
|
|
10
|
-
*
|
|
11
|
-
* `.vue` imports are written with explicit extensions (`'./Button.vue'`),
|
|
12
|
-
* so no Vue-specific suffix guessing is required: the standard
|
|
13
|
-
* resolver finds them via the exact-path branch before any extension
|
|
14
|
-
* logic fires.
|
|
15
|
-
*
|
|
16
|
-
* Memoization mirrors the TypeScript adapter: workspace file-list
|
|
17
|
-
* arrays, the suffix index, and the per-pass resolve cache are rebuilt
|
|
18
|
-
* lazily when `allFilePaths` reference changes (once per workspace pass).
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Build a memoized `resolveImportTarget` adapter for Vue SFCs.
|
|
22
|
-
*
|
|
23
|
-
* Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
|
|
24
|
-
* and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
|
|
25
|
-
* imports inside `<script>` blocks.
|
|
4
|
+
* `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
|
|
5
|
+
* resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
|
|
6
|
+
* same `package.json` manifests. `.vue` imports are written with an explicit
|
|
7
|
+
* extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
|
|
8
|
+
* Vue-specific guessing is required — the exact-path branch finds them first.
|
|
26
9
|
*/
|
|
10
|
+
/** Build the Vue `resolveImportTarget` adapter. */
|
|
27
11
|
export declare function makeVueResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
|
|
@@ -1,58 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
|
|
10
|
-
*
|
|
11
|
-
* `.vue` imports are written with explicit extensions (`'./Button.vue'`),
|
|
12
|
-
* so no Vue-specific suffix guessing is required: the standard
|
|
13
|
-
* resolver finds them via the exact-path branch before any extension
|
|
14
|
-
* logic fires.
|
|
15
|
-
*
|
|
16
|
-
* Memoization mirrors the TypeScript adapter: workspace file-list
|
|
17
|
-
* arrays, the suffix index, and the per-pass resolve cache are rebuilt
|
|
18
|
-
* lazily when `allFilePaths` reference changes (once per workspace pass).
|
|
4
|
+
* `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
|
|
5
|
+
* resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
|
|
6
|
+
* same `package.json` manifests. `.vue` imports are written with an explicit
|
|
7
|
+
* extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
|
|
8
|
+
* Vue-specific guessing is required — the exact-path branch finds them first.
|
|
19
9
|
*/
|
|
20
|
-
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
21
10
|
import { resolveTsTarget } from '../typescript/import-target.js';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Build a memoized `resolveImportTarget` adapter for Vue SFCs.
|
|
25
|
-
*
|
|
26
|
-
* Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
|
|
27
|
-
* and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
|
|
28
|
-
* imports inside `<script>` blocks.
|
|
29
|
-
*/
|
|
11
|
+
/** Build the Vue `resolveImportTarget` adapter. */
|
|
30
12
|
export function makeVueResolveImportTarget() {
|
|
31
|
-
let cached = null;
|
|
32
13
|
return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
33
|
-
if (cached === null || cached.key !== allFilePaths) {
|
|
34
|
-
const allFileList = Array.from(allFilePaths);
|
|
35
|
-
const normalizedFileList = allFileList.map((f) => f.toLowerCase());
|
|
36
|
-
cached = {
|
|
37
|
-
key: allFilePaths,
|
|
38
|
-
allFilePaths: new Set(allFilePaths),
|
|
39
|
-
allFileList,
|
|
40
|
-
normalizedFileList,
|
|
41
|
-
index: buildSuffixIndex(normalizedFileList, allFileList),
|
|
42
|
-
resolveCache: new Map(),
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
14
|
const cfg = resolutionConfig;
|
|
46
|
-
|
|
15
|
+
return resolveTsTarget(targetRaw, {
|
|
47
16
|
fromFile,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
index: cached.index,
|
|
53
|
-
resolveCache: cached.resolveCache,
|
|
54
|
-
tsconfigPaths: cfg?.tsconfigPaths ?? null,
|
|
55
|
-
};
|
|
56
|
-
return resolveTsTarget(targetRaw, ws);
|
|
17
|
+
allFilePaths,
|
|
18
|
+
tsconfigs: cfg?.tsconfigs ?? null,
|
|
19
|
+
nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
|
|
20
|
+
});
|
|
57
21
|
};
|
|
58
22
|
}
|