gitnexus 1.6.10-rc.99 → 1.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +77 -2
- package/dist/core/index-freshness.js +109 -2
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +65 -19
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +14 -2
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +19 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +598 -16
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +77 -32
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/query.js +15 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +211 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.js +29 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +39 -1
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +39 -6
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +87 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +267 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +214 -29
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +309 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/error-D9MtuG9s.js +1 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +16 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
* inferred from leading JSDoc comments. A lightweight regex scanner
|
|
19
19
|
* (`parseJsDocParams` / `parseJsDocReturn`) extracts `@param {T} n`
|
|
20
20
|
* and `@returns {T}` tags and emits synthetic captures positioned on
|
|
21
|
-
* the annotated function node.
|
|
21
|
+
* the annotated function node. `@type {T}` on a class FIELD is the same
|
|
22
|
+
* story one level down — it is the only way JavaScript can declare a
|
|
23
|
+
* field's type at all — and emits `@type-binding.class-field` (#2833).
|
|
22
24
|
*
|
|
23
25
|
* 4. **Shared synthesis passes** — destructuring, for-of map-tuple, and
|
|
24
26
|
* instanceof narrowing passes are duplicated from `typescript/captures.ts`
|
|
@@ -32,19 +34,58 @@ import { getJsParser, getJsScopeQuery, jsCachedTreeMatchesGrammar } from './quer
|
|
|
32
34
|
import { computeTsArityMetadata } from '../typescript/arity-metadata.js';
|
|
33
35
|
import { synthesizeTsReceiverBinding } from '../typescript/receiver-binding.js';
|
|
34
36
|
import { isArrayMethodCallbackArrow } from '../typescript/array-callback.js';
|
|
37
|
+
import { isStaticClassFieldBinding } from '../typescript/captures.js';
|
|
38
|
+
import { reducesToContainedType } from '../typescript/interpret.js';
|
|
39
|
+
/** JavaScript's spelling of a class-field declaration — the TypeScript grammar
|
|
40
|
+
* calls the same construct `public_field_definition`. Named here, not in the
|
|
41
|
+
* shared predicate, so each literal is checked against the grammar of the file
|
|
42
|
+
* it lives in (`grammar-literal-validation`). */
|
|
43
|
+
const JS_CLASS_FIELD_DEFINITION_TYPES = new Set(['field_definition']);
|
|
44
|
+
import { hasKeyword } from '../../field-extractors/configs/helpers.js';
|
|
45
|
+
import { synthesizeCjsModuleExports } from '../typescript/cjs-module-exports.js';
|
|
46
|
+
import { isShadowedCjsExportAssignment, isUnexportedMemberAssignmentValue, isUndeclarableThisMemberValue, } from '../typescript/cjs-export-assignment.js';
|
|
35
47
|
import { getTreeSitterBufferSize } from '../../constants.js';
|
|
36
48
|
import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
|
|
37
49
|
import { synthesizeCallableFlowCaptures } from '../../utils/callable-flow-captures.js';
|
|
50
|
+
import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
|
|
38
51
|
import { deriveDefaultExportHocName, isBlockedDefaultExportHoc, isDefaultExportHocFunctionNode, } from '../../ts-js-hoc-utils.js';
|
|
39
52
|
/** JS function-like node types that may carry a synthesized `this` binding.
|
|
40
53
|
* Kept in sync with the `@scope.function` patterns in `query.ts`. */
|
|
41
|
-
const FUNCTION_NODE_TYPES = [
|
|
54
|
+
export const FUNCTION_NODE_TYPES = [
|
|
42
55
|
'method_definition',
|
|
43
56
|
'arrow_function',
|
|
44
57
|
'function_expression',
|
|
45
58
|
'function_declaration',
|
|
46
59
|
'generator_function_declaration',
|
|
60
|
+
// The EXPRESSION form (`const g = function* () {}`) — see the matching note
|
|
61
|
+
// in `typescript/captures.ts`.
|
|
62
|
+
'generator_function',
|
|
47
63
|
];
|
|
64
|
+
/** Nodes whose `statement_block` child is their BODY, not a nested block. */
|
|
65
|
+
const JS_FUNCTION_BODY_OWNER_TYPES = new Set(FUNCTION_NODE_TYPES);
|
|
66
|
+
/** Direct-child node types that create a BINDING in their enclosing block.
|
|
67
|
+
* `variable_declaration` (`var`) is deliberately absent: it hoists past the
|
|
68
|
+
* block to the function, so a block containing only `var` binds nothing. */
|
|
69
|
+
const BLOCK_BINDING_CHILD_TYPES = new Set([
|
|
70
|
+
'lexical_declaration',
|
|
71
|
+
'class_declaration',
|
|
72
|
+
'function_declaration',
|
|
73
|
+
'generator_function_declaration',
|
|
74
|
+
]);
|
|
75
|
+
/** True when `block` directly declares a name, i.e. it is a real environment
|
|
76
|
+
* record rather than punctuation. A block that binds nothing is transparent to
|
|
77
|
+
* every scope-chain walk — a lookup finds nothing in it and continues to the
|
|
78
|
+
* parent — so emitting a scope for it costs tree size and walk depth and buys
|
|
79
|
+
* exactly nothing. Only DIRECT children count: a declaration in a nested block
|
|
80
|
+
* belongs to that block, which gets its own scope by the same rule. */
|
|
81
|
+
const blockDeclaresBinding = (block) => {
|
|
82
|
+
for (let i = 0; i < block.namedChildCount; i++) {
|
|
83
|
+
const child = block.namedChild(i);
|
|
84
|
+
if (child !== null && BLOCK_BINDING_CHILD_TYPES.has(child.type))
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
};
|
|
48
89
|
/** Declaration anchors that carry function-like arity metadata. */
|
|
49
90
|
const FUNCTION_DECL_TAGS = ['@declaration.method', '@declaration.function'];
|
|
50
91
|
/** Callsite anchors that should carry `@reference.arity` + param types. */
|
|
@@ -294,9 +335,133 @@ function parseJsDocType(text) {
|
|
|
294
335
|
const m = /@type\s+\{([^}]+)\}/.exec(text);
|
|
295
336
|
return m ? m[1].trim() : null;
|
|
296
337
|
}
|
|
338
|
+
/**
|
|
339
|
+
* A type REFERENCE, possibly qualified, generic, or unioned:
|
|
340
|
+
* `Repo`, `Repo<User>`, `models.Repo`, `Handler<Req, Res>`, `Repo|null`,
|
|
341
|
+
* `Repo<User> | null`.
|
|
342
|
+
*
|
|
343
|
+
* Applied only to a string already capped by {@link JSDOC_TYPE_MAX_LENGTH}:
|
|
344
|
+
* the union and generic groups both nest quantifiers, so an unbounded
|
|
345
|
+
* non-matching input is a backtracking hazard, and a docblock's `{…}` payload
|
|
346
|
+
* is attacker-shaped text (it is whatever the file says).
|
|
347
|
+
*
|
|
348
|
+
* JSDoc's `{…}` payload is free text and carries shapes that are not
|
|
349
|
+
* references at all — record types (`{{a: number}}`), function types
|
|
350
|
+
* (`{function(string): void}`), the any-type `{*}`, parenthesized unions
|
|
351
|
+
* (`{(Repo|Other)}`). None of those name a class, so a field annotated with
|
|
352
|
+
* one is DECLINED rather than bound to whatever substring survives
|
|
353
|
+
* normalization. (`parseJsDocType`'s `[^}]+` also truncates a record type at
|
|
354
|
+
* its first `}`, which this rejects too.)
|
|
355
|
+
*/
|
|
356
|
+
/** Longest `@type {…}` payload considered. A type REFERENCE that names a class
|
|
357
|
+
* is far shorter; past this the string is a structural type or generated
|
|
358
|
+
* noise, which this pass declines anyway, and the cap is what keeps
|
|
359
|
+
* {@link JSDOC_TYPE_REFERENCE_RE}'s nested quantifiers off an unbounded
|
|
360
|
+
* input. */
|
|
361
|
+
const JSDOC_TYPE_MAX_LENGTH = 200;
|
|
362
|
+
const JSDOC_TYPE_REFERENCE_RE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*(?:\s*<[\w$.,<>\s]*>)?(?:\s*\|\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*(?:\s*<[\w$.,<>\s]*>)?)*$/;
|
|
363
|
+
/**
|
|
364
|
+
* The spelling a JSDoc `@type` should bind a class FIELD to, or `null` to
|
|
365
|
+
* decline.
|
|
366
|
+
*
|
|
367
|
+
* The as-written spelling is returned, NOT a reduced one: `interpretJsTypeBinding`
|
|
368
|
+
* carries `Repo<User>` through to `TypeRef.rawName` untouched (user generics are
|
|
369
|
+
* not on `stripGeneric`'s wrapper list), and `resolveClassBindingForName` erases
|
|
370
|
+
* the arguments to `Repo` at lookup time. That is the same erasure every other
|
|
371
|
+
* language in #2833 relies on, so generics need no code here — verified, not
|
|
372
|
+
* assumed, by the capture probe in that issue.
|
|
373
|
+
*
|
|
374
|
+
* Two declines:
|
|
375
|
+
* - `reducesToContainedType` — the container spellings whose interpretation
|
|
376
|
+
* would yield the ELEMENT (`Repo[]`, `Array<Repo>`, `Promise<Repo>`). See
|
|
377
|
+
* that predicate for why a field must not take its element's type.
|
|
378
|
+
* - anything that is not a type reference (see JSDOC_TYPE_REFERENCE_RE).
|
|
379
|
+
*
|
|
380
|
+
* The leading `?` / `!` nullability sigils are JSDoc-specific decoration with no
|
|
381
|
+
* bearing on which class is named, so they are peeled first — `{?Repo}` binds
|
|
382
|
+
* `Repo` exactly as `{Repo|null}` does.
|
|
383
|
+
*/
|
|
384
|
+
function jsDocFieldTypeSpelling(rawType) {
|
|
385
|
+
const spelling = rawType
|
|
386
|
+
.trim()
|
|
387
|
+
.replace(/^[?!]+/, '')
|
|
388
|
+
.trim();
|
|
389
|
+
if (spelling === '' || spelling.length > JSDOC_TYPE_MAX_LENGTH)
|
|
390
|
+
return null;
|
|
391
|
+
if (reducesToContainedType(spelling))
|
|
392
|
+
return null;
|
|
393
|
+
if (!JSDOC_TYPE_REFERENCE_RE.test(spelling))
|
|
394
|
+
return null;
|
|
395
|
+
return spelling;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* The identifier a JSDoc `@type` may bind a `field_definition` to, or `null` if
|
|
399
|
+
* this field takes no docblock binding at all (#2833).
|
|
400
|
+
*
|
|
401
|
+
* Two refusals, and both are cheaper to answer than the docblock search they
|
|
402
|
+
* gate, which is why they run before it:
|
|
403
|
+
*
|
|
404
|
+
* - `static` fields are dropped, exactly as the query-driven annotation path
|
|
405
|
+
* drops them in `emitJsScopeCaptures` — a static member belongs to the class
|
|
406
|
+
* object and would silently RETYPE an instance field of the same name. The
|
|
407
|
+
* full cost of that trade, measured, is in `isStaticClassFieldBinding`
|
|
408
|
+
* (#2807). Re-checked here because the synthesis pass runs outside the
|
|
409
|
+
* match loop that applies it.
|
|
410
|
+
* - a name that is not a plain identifier (a computed key, a string key)
|
|
411
|
+
* names nothing `this.x` could look up.
|
|
412
|
+
*
|
|
413
|
+
* The JavaScript grammar names a field's name `property:`, not `name:`. `#priv`
|
|
414
|
+
* arrives as `private_property_identifier`; TypeScript binds those under their
|
|
415
|
+
* `#`-prefixed spelling, which is how `this.#priv` looks it up.
|
|
416
|
+
*/
|
|
417
|
+
function jsDocBindableFieldName(node) {
|
|
418
|
+
if (isStaticClassFieldBinding(node, JS_CLASS_FIELD_DEFINITION_TYPES))
|
|
419
|
+
return null;
|
|
420
|
+
const nameNode = node.childForFieldName('property');
|
|
421
|
+
if (nameNode === null ||
|
|
422
|
+
(nameNode.type !== 'property_identifier' && nameNode.type !== 'private_property_identifier')) {
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
return nameNode;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Emit the class-FIELD type binding a JSDoc `@type {T}` block declares (#2833).
|
|
429
|
+
*
|
|
430
|
+
* JavaScript has no type annotations, so a docblock is the only way a field
|
|
431
|
+
* can declare one — and measured before this branch, `/** @type {Repo<User>} */
|
|
432
|
+
* repo;` bound NOTHING, taking down the non-generic control (`{Plain}`) with
|
|
433
|
+
* it. TypeScript's equivalent `repo: Repo<User>` has always bound, via the
|
|
434
|
+
* `@type-binding.annotation` rule on `public_field_definition`; this reaches the
|
|
435
|
+
* same DESTINATION from the docblock — an annotation-strength binding on the
|
|
436
|
+
* enclosing Class scope, which is the only place `typeOfMemberOnClass` reads a
|
|
437
|
+
* field's type — so the compound-receiver resolver finds it the way it always
|
|
438
|
+
* has. No resolution-side change. See the tag note on the emit below for why
|
|
439
|
+
* the marker is `class-field` rather than `annotation`.
|
|
440
|
+
*/
|
|
441
|
+
function emitJsDocFieldBinding(docComment, nameNode, out) {
|
|
442
|
+
const rawType = parseJsDocType(docComment);
|
|
443
|
+
const spelling = rawType === null ? null : jsDocFieldTypeSpelling(rawType);
|
|
444
|
+
if (spelling === null)
|
|
445
|
+
return;
|
|
446
|
+
out.push({
|
|
447
|
+
'@type-binding.name': syntheticCapture('@type-binding.name', nameNode, nameNode.text),
|
|
448
|
+
'@type-binding.type': syntheticCapture('@type-binding.type', nameNode, spelling),
|
|
449
|
+
// `class-field`, not `annotation`: this is the JS provider's own
|
|
450
|
+
// marker for a binding that must be HOISTED to the enclosing Class
|
|
451
|
+
// scope, which is where `typeOfMemberOnClass` reads a field's type.
|
|
452
|
+
// `jsBindingScopeFor` does that walk; `interpretJsTypeBinding` then
|
|
453
|
+
// remaps the tag to `annotation` so the source strength is the same
|
|
454
|
+
// as TypeScript's `repo: Repo<User>`. Measured: with `annotation`
|
|
455
|
+
// the binding lands on the innermost scope and the field never
|
|
456
|
+
// types — the same shape `synthesizeConstructorFieldBindings` needs
|
|
457
|
+
// for `this.p = new Outer()`.
|
|
458
|
+
'@type-binding.class-field': syntheticCapture('@type-binding.class-field', nameNode, '1'),
|
|
459
|
+
});
|
|
460
|
+
}
|
|
297
461
|
/**
|
|
298
462
|
* Walk the AST and synthesize `@type-binding.*` captures from JSDoc
|
|
299
|
-
* comments immediately preceding function declarations / expressions
|
|
463
|
+
* comments immediately preceding function declarations / expressions and class
|
|
464
|
+
* field definitions.
|
|
300
465
|
*
|
|
301
466
|
* Only `/** … */` block comments are scanned. Line comments (`//`) are
|
|
302
467
|
* intentionally excluded — JSDoc lives in block comments.
|
|
@@ -307,10 +472,23 @@ function parseJsDocType(text) {
|
|
|
307
472
|
* - `@type-binding.annotation` for `@type {T}` on `let`/`const`/`var`
|
|
308
473
|
* declarations — covers the common `/** @type {User} */ const u = …`
|
|
309
474
|
* pattern (ECMA-262 §14.3.1/§14.3.2 variable declarations).
|
|
475
|
+
* - `@type-binding.class-field` for `@type {T}` on a `field_definition`
|
|
476
|
+
* (#2833) — see {@link emitJsDocFieldBinding}.
|
|
310
477
|
*
|
|
311
478
|
* The binding is anchored on the function node so `tsBindingScopeFor`
|
|
312
479
|
* can hoist method return-type bindings to Module scope (matching the
|
|
313
480
|
* TypeScript path where `hoistTypeBindingsToModule: true`).
|
|
481
|
+
*
|
|
482
|
+
* `field_definition` is a node kind of THIS walk rather than a pass of its own,
|
|
483
|
+
* even though a field's anchor and name are the field itself while every other
|
|
484
|
+
* branch keys off a function-like anchor. A separate pass would be a ninth
|
|
485
|
+
* full-tree traversal of `emitJsScopeCaptures`, and measured on
|
|
486
|
+
* `dist/core/ingestion/workers/parse-worker.js` (2.4k lines, 17.3k nodes) one
|
|
487
|
+
* `namedChildren` walk costs 14.3 ms against 7.5 ms to PARSE the whole file —
|
|
488
|
+
* `node.namedChildren` materializes a fresh array of node wrappers across the
|
|
489
|
+
* N-API boundary at every node. The two node kinds share this walk's preceding-
|
|
490
|
+
* comment search and nothing else, so the branch below returns as soon as it
|
|
491
|
+
* has emitted.
|
|
314
492
|
*/
|
|
315
493
|
function synthesizeJsDocBindings(root, out) {
|
|
316
494
|
const stack = [root];
|
|
@@ -326,7 +504,14 @@ function synthesizeJsDocBindings(root, out) {
|
|
|
326
504
|
const isMethodDef = node.type === 'method_definition';
|
|
327
505
|
// Also check lexical_declaration containing an arrow/fn-expression
|
|
328
506
|
const isLexDecl = node.type === 'lexical_declaration' || node.type === 'variable_declaration';
|
|
329
|
-
|
|
507
|
+
const isFieldDef = node.type === 'field_definition';
|
|
508
|
+
if (!isFnDecl && !isMethodDef && !isLexDecl && !isFieldDef)
|
|
509
|
+
continue;
|
|
510
|
+
// Non-null exactly for a field that can carry a binding, so it doubles as
|
|
511
|
+
// the branch selector inside the comment search below. Answered before that
|
|
512
|
+
// search because an unbindable field has no reason to look for a docblock.
|
|
513
|
+
const fieldNameNode = isFieldDef ? jsDocBindableFieldName(node) : null;
|
|
514
|
+
if (isFieldDef && fieldNameNode === null)
|
|
330
515
|
continue;
|
|
331
516
|
// For `export function foo() { ... }`, the JSDoc comment precedes the
|
|
332
517
|
// wrapping export_statement, not the inner function_declaration.
|
|
@@ -337,6 +522,13 @@ function synthesizeJsDocBindings(root, out) {
|
|
|
337
522
|
while (sibling !== null && sibling.type === 'comment') {
|
|
338
523
|
const text = sibling.text;
|
|
339
524
|
if (text.startsWith('/**')) {
|
|
525
|
+
// A field's docblock declares its own type and nothing else — `@param` /
|
|
526
|
+
// `@returns` on a field name no callable — so this branch does not fall
|
|
527
|
+
// through to the function-like tags below.
|
|
528
|
+
if (fieldNameNode !== null) {
|
|
529
|
+
emitJsDocFieldBinding(text, fieldNameNode, out);
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
340
532
|
// Found a JSDoc block.
|
|
341
533
|
const params = parseJsDocParams(text);
|
|
342
534
|
const retType = parseJsDocReturn(text);
|
|
@@ -556,9 +748,26 @@ function synthesizeConstructorFieldBindings(root, out) {
|
|
|
556
748
|
// Only process constructor method definitions
|
|
557
749
|
if (node.type !== 'method_definition')
|
|
558
750
|
continue;
|
|
751
|
+
// …and only a CLASS's. An object literal's members are `method_definition`
|
|
752
|
+
// too, so `{ constructor() { this.p = new Alien(); } }` reached here and
|
|
753
|
+
// typed a field on whatever class the hoist walked up to — an object
|
|
754
|
+
// literal's `this` is the literal, never that class's instance (#2807).
|
|
755
|
+
// TypeScript's sibling pattern carries the same constraint in its query
|
|
756
|
+
// nesting; the two must not read one source differently.
|
|
757
|
+
if (node.parent?.type !== 'class_body')
|
|
758
|
+
continue;
|
|
559
759
|
const nameNode = node.childForFieldName('name');
|
|
560
760
|
if (nameNode?.text !== 'constructor')
|
|
561
761
|
continue;
|
|
762
|
+
// `static constructor() {}` is legal JavaScript — the reserved-name rule
|
|
763
|
+
// applies to instance methods only — and its `this` is the CLASS object, so
|
|
764
|
+
// `this.p = new Alien()` there writes a static property and must not type
|
|
765
|
+
// the instance field `p`. TypeScript's sibling guard (`isStaticMethodThis`)
|
|
766
|
+
// already drops this shape; without the same test here `.js` and `.ts` read
|
|
767
|
+
// one source differently. `hasKeyword` skips the `name` field, so a method
|
|
768
|
+
// named `static` cannot false-positive.
|
|
769
|
+
if (hasKeyword(node, 'static'))
|
|
770
|
+
continue;
|
|
562
771
|
const body = node.childForFieldName('body');
|
|
563
772
|
if (body === null)
|
|
564
773
|
continue;
|
|
@@ -759,6 +968,18 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
759
968
|
continue;
|
|
760
969
|
}
|
|
761
970
|
// Filter @reference.read.member false-positives.
|
|
971
|
+
// See the matching filter in typescript/captures.ts: a `statement_block`
|
|
972
|
+
// that IS a function body duplicates the enclosing Function scope, and
|
|
973
|
+
// keeping it puts a redundant level inside every function for every
|
|
974
|
+
// scope-chain walk to step through (~6% of analyze wall time, measured).
|
|
975
|
+
if (grouped['@scope.block'] !== undefined) {
|
|
976
|
+
const blockNode = groupedNodes['@scope.block'];
|
|
977
|
+
const parentType = blockNode?.parent?.type;
|
|
978
|
+
if (parentType !== undefined && JS_FUNCTION_BODY_OWNER_TYPES.has(parentType))
|
|
979
|
+
continue;
|
|
980
|
+
if (blockNode === undefined || !blockDeclaresBinding(blockNode))
|
|
981
|
+
continue;
|
|
982
|
+
}
|
|
762
983
|
if (grouped['@reference.read.member'] !== undefined) {
|
|
763
984
|
const anchor = grouped['@reference.read.member'];
|
|
764
985
|
const memberNode = findSelfOrAncestorOfType(groupedNodes['@reference.read.member'], 'member_expression') ??
|
|
@@ -767,6 +988,18 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
767
988
|
continue;
|
|
768
989
|
}
|
|
769
990
|
}
|
|
991
|
+
// A `static` class field is a member of the class object, not of instances,
|
|
992
|
+
// so `static p = new Wrong()` must not retype the `p = new Right()` beside
|
|
993
|
+
// it — the two land on one Class scope and the later match wins the `>=`
|
|
994
|
+
// tie-break. Shared with TypeScript (`isStaticClassFieldBinding`), which is
|
|
995
|
+
// where the reasoning and the grammar evidence live; the two languages read
|
|
996
|
+
// the same source and must not read it differently. JavaScript has no type
|
|
997
|
+
// annotations, so `field_definition` initializers are the only class-field
|
|
998
|
+
// type binding its query emits and `@type-binding.constructor` is the only
|
|
999
|
+
// anchor that can carry the modifier.
|
|
1000
|
+
if (isStaticClassFieldBinding(groupedNodes['@type-binding.constructor'], JS_CLASS_FIELD_DEFINITION_TYPES)) {
|
|
1001
|
+
continue;
|
|
1002
|
+
}
|
|
770
1003
|
// #1876: drop @declaration.function for array higher-order-method
|
|
771
1004
|
// callbacks (`const x = arr.map(a => …)`). The HOC-wrapped-arrow
|
|
772
1005
|
// pattern matches them, but the binding holds a value, not a callable.
|
|
@@ -783,6 +1016,24 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
783
1016
|
if (arrowNode !== null && isBlockedDefaultExportHoc(arrowNode)) {
|
|
784
1017
|
continue;
|
|
785
1018
|
}
|
|
1019
|
+
// #2723 — see the matching filter in `typescript/captures.ts`.
|
|
1020
|
+
if (arrowNode !== null && isShadowedCjsExportAssignment(arrowNode, tree.rootNode)) {
|
|
1021
|
+
continue;
|
|
1022
|
+
}
|
|
1023
|
+
// #2723 follow-up: the member-assignment rule matches ANY identifier
|
|
1024
|
+
// receiver so an `exports` alias can be recognised. A receiver that is
|
|
1025
|
+
// not the exports object declares nothing at module scope — drop it, or
|
|
1026
|
+
// every `obj.handler = fn` would bind `handler` as a module symbol.
|
|
1027
|
+
if (arrowNode !== null && isUnexportedMemberAssignmentValue(arrowNode, tree.rootNode)) {
|
|
1028
|
+
continue;
|
|
1029
|
+
}
|
|
1030
|
+
// A `this.X = fn` declares a module symbol ONLY at the top level of a
|
|
1031
|
+
// CommonJS file, where `this` is `module.exports`. Inside a function it
|
|
1032
|
+
// is an instance member (a Method with an owner, no module binding), and
|
|
1033
|
+
// in ESM top-level `this` is undefined and exports nothing.
|
|
1034
|
+
if (arrowNode !== null && isUndeclarableThisMemberValue(arrowNode, tree.rootNode)) {
|
|
1035
|
+
continue;
|
|
1036
|
+
}
|
|
786
1037
|
}
|
|
787
1038
|
if (fnDeclAnchor !== undefined) {
|
|
788
1039
|
const fnNode = findFunctionNode(tree.rootNode, fnDeclAnchor.range, groupedNodes['@declaration.function']);
|
|
@@ -835,6 +1086,12 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
835
1086
|
grouped['@reference.parameter-types'] = syntheticCapture('@reference.parameter-types', callNode, JSON.stringify(args.map(inferArgType)));
|
|
836
1087
|
}
|
|
837
1088
|
}
|
|
1089
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
1090
|
+
// expression, so resolution can type it by folding over structure
|
|
1091
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
1092
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
1093
|
+
// all leave `grouped` untouched.
|
|
1094
|
+
synthesizeReceiverChainCapture(grouped, groupedNodes['@reference.receiver']);
|
|
838
1095
|
out.push(grouped);
|
|
839
1096
|
// Synthesize `this` receiver type-bindings on class member functions.
|
|
840
1097
|
const scopeFnAnchor = grouped['@scope.function'];
|
|
@@ -849,6 +1106,7 @@ export function emitJsScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
849
1106
|
}
|
|
850
1107
|
// Post-query synthesis passes.
|
|
851
1108
|
synthesizeCjsImports(tree.rootNode, out);
|
|
1109
|
+
synthesizeCjsModuleExports(tree.rootNode, filePath, out);
|
|
852
1110
|
synthesizeJsDocBindings(tree.rootNode, out);
|
|
853
1111
|
synthesizeConstructorFieldBindings(tree.rootNode, out);
|
|
854
1112
|
synthesizeDestructuringBindings(tree.rootNode, out);
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for JavaScript.
|
|
3
3
|
*
|
|
4
|
-
* Delegates to the TypeScript
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Delegates to the TypeScript resolver, which is correct rather than merely
|
|
5
|
+
* convenient: `jsconfig.json` is a tsconfig by another name, `package.json`
|
|
6
|
+
* governs both languages identically, and Node's algorithm does not branch on
|
|
7
|
+
* which of the two wrote the file. The extension list already carries the JS
|
|
8
|
+
* family, so a `.js`/`.jsx`/`.mjs`/`.cjs` source resolves the same way.
|
|
7
9
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* CJS `require()` calls reference the same module-path strings as ESM `import`
|
|
11
|
+
* statements, so the resolver handles them uniformly with no CJS-specific
|
|
12
|
+
* logic here.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
* `import` statements, so the resolver handles them uniformly without any
|
|
14
|
-
* CJS-specific logic here.
|
|
14
|
+
* ## What #2953 removed
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export type JsResolveContext = TsResolveContext;
|
|
24
|
-
/**
|
|
25
|
-
* Build a memoized `resolveImportTarget` adapter for JavaScript.
|
|
26
|
-
* Caches the derived arrays and per-pass resolve cache across
|
|
27
|
-
* `resolveImportTarget` calls within a single workspace pass.
|
|
16
|
+
* This adapter used to reach `resolveImportPath`, whose last step was
|
|
17
|
+
* `suffixResolve` — a search for any repo file whose path ends in the
|
|
18
|
+
* specifier, retried with each leading segment dropped. The header this
|
|
19
|
+
* replaces recorded the symptom without naming it a defect: `import 'app/main'`
|
|
20
|
+
* resolving to `node_modules/dep/lib/main.js`, "the first `/main.js` in file
|
|
21
|
+
* order". A bare specifier now resolves only through a declared tsconfig
|
|
22
|
+
* mapping or a package manifest, and otherwise not at all.
|
|
28
23
|
*/
|
|
24
|
+
/** Build the JavaScript `resolveImportTarget` adapter. */
|
|
29
25
|
export declare function makeJsResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
|
|
@@ -1,53 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Import-target resolver for JavaScript.
|
|
3
3
|
*
|
|
4
|
-
* Delegates to the TypeScript
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Delegates to the TypeScript resolver, which is correct rather than merely
|
|
5
|
+
* convenient: `jsconfig.json` is a tsconfig by another name, `package.json`
|
|
6
|
+
* governs both languages identically, and Node's algorithm does not branch on
|
|
7
|
+
* which of the two wrote the file. The extension list already carries the JS
|
|
8
|
+
* family, so a `.js`/`.jsx`/`.mjs`/`.cjs` source resolves the same way.
|
|
7
9
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* CJS `require()` calls reference the same module-path strings as ESM `import`
|
|
11
|
+
* statements, so the resolver handles them uniformly with no CJS-specific
|
|
12
|
+
* logic here.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
* `import` statements, so the resolver handles them uniformly without any
|
|
14
|
-
* CJS-specific logic here.
|
|
14
|
+
* ## What #2953 removed
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `
|
|
16
|
+
* This adapter used to reach `resolveImportPath`, whose last step was
|
|
17
|
+
* `suffixResolve` — a search for any repo file whose path ends in the
|
|
18
|
+
* specifier, retried with each leading segment dropped. The header this
|
|
19
|
+
* replaces recorded the symptom without naming it a defect: `import 'app/main'`
|
|
20
|
+
* resolving to `node_modules/dep/lib/main.js`, "the first `/main.js` in file
|
|
21
|
+
* order". A bare specifier now resolves only through a declared tsconfig
|
|
22
|
+
* mapping or a package manifest, and otherwise not at all.
|
|
21
23
|
*/
|
|
22
|
-
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
23
24
|
import { resolveTsTarget } from '../typescript/import-target.js';
|
|
24
|
-
/**
|
|
25
|
-
* Build a memoized `resolveImportTarget` adapter for JavaScript.
|
|
26
|
-
* Caches the derived arrays and per-pass resolve cache across
|
|
27
|
-
* `resolveImportTarget` calls within a single workspace pass.
|
|
28
|
-
*/
|
|
25
|
+
/** Build the JavaScript `resolveImportTarget` adapter. */
|
|
29
26
|
export function makeJsResolveImportTarget() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const allFileList = Array.from(allFilePaths);
|
|
34
|
-
cached = {
|
|
35
|
-
key: allFilePaths,
|
|
36
|
-
allFilePaths: new Set(allFilePaths),
|
|
37
|
-
allFileList,
|
|
38
|
-
normalizedFileList: allFileList.map((f) => f.toLowerCase()),
|
|
39
|
-
resolveCache: new Map(),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const ws = {
|
|
27
|
+
return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
|
|
28
|
+
const cfg = resolutionConfig;
|
|
29
|
+
return resolveTsTarget(targetRaw, {
|
|
43
30
|
fromFile,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
resolveCache: cached.resolveCache,
|
|
49
|
-
tsconfigPaths: null,
|
|
50
|
-
};
|
|
51
|
-
return resolveTsTarget(targetRaw, ws);
|
|
31
|
+
allFilePaths,
|
|
32
|
+
tsconfigs: cfg?.tsconfigs ?? null,
|
|
33
|
+
nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
|
|
34
|
+
});
|
|
52
35
|
};
|
|
53
36
|
}
|
|
@@ -34,11 +34,60 @@
|
|
|
34
34
|
* resolved.
|
|
35
35
|
* 3. **Dynamic require** — `require(computedPath)` is skipped (non-literal
|
|
36
36
|
* argument — cannot statically resolve the target).
|
|
37
|
-
* 4.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
37
|
+
* 4. **CommonJS `require()` in TypeScript** — `require()` decomposition is a
|
|
38
|
+
* JavaScript-emitter concern, so a `.ts` file's `const m = require('./m')`
|
|
39
|
+
* is not decomposed into an import. The EXPORT side of a `.ts` CommonJS
|
|
40
|
+
* module is now declared (shared with the JS emitter), but an importer
|
|
41
|
+
* written in TypeScript still cannot resolve through it.
|
|
42
|
+
* 5. **`.cjs` module-level `this`** — the CommonJS/ESM gate consults the file
|
|
43
|
+
* extension where it can, but `provider.labelOverride` receives no file
|
|
44
|
+
* path, so a `.cjs` file whose only export is a module-level `this.X = fn`
|
|
45
|
+
* is not labelled. It now emits nothing rather than an ownerless `Method`.
|
|
46
|
+
* 6. **Calling a renamed default-export binding** — `module.exports = fn` IS
|
|
47
|
+
* indexed (#2723, named after the file), but resolving a CALL through a
|
|
48
|
+
* renamed local binding (`const renamed = require('./mod'); renamed()`)
|
|
49
|
+
* needs the finalize layer to treat a called namespace binding as the
|
|
50
|
+
* target module's default export. `const mod = require('./mod'); mod()`
|
|
51
|
+
* happens to resolve because the names coincide.
|
|
52
|
+
* 7. **Anonymous ESM default** — `export default function () {}` (no name)
|
|
53
|
+
* is not indexed either. Same class as the CJS default above, different
|
|
54
|
+
* construct; not addressed by #2723.
|
|
55
|
+
*
|
|
56
|
+
* ## CommonJS export forms (#2723)
|
|
57
|
+
*
|
|
58
|
+
* Each of these declares its name in the module scope, so importers resolve to
|
|
59
|
+
* it by name — `const { foo } = require('./m')` matches directly and a
|
|
60
|
+
* namespace `m.foo()` walks the module's defs:
|
|
61
|
+
*
|
|
62
|
+
* - `exports.foo = function () {}` / `module.exports.foo = (a) => a`, in
|
|
63
|
+
* every value form (function, async, arrow, async arrow, generator).
|
|
64
|
+
* - `const e = exports; e.foo = fn` — an alias bound at module scope. The
|
|
65
|
+
* receiver cannot be pinned in a query, so the member-assignment rules
|
|
66
|
+
* match any identifier receiver and the emitters prune anything that is
|
|
67
|
+
* not the exports object.
|
|
68
|
+
* - `this.foo = fn` at MODULE level of a CommonJS file, where `this` is
|
|
69
|
+
* `module.exports`. Gated on the file being CommonJS — in ESM top-level
|
|
70
|
+
* `this` is undefined and the same line exports nothing.
|
|
71
|
+
* - `exports.foo = lib.imported` / `exports.foo = importedName` — forwarded
|
|
72
|
+
* as a re-export (`reexport-alias`), so callers reach the ORIGINAL
|
|
73
|
+
* definition. A plain import binding would not do: it is private to its
|
|
74
|
+
* module, exactly as in ESM.
|
|
75
|
+
* - `module.exports = fn` — the whole module is the callable, so it is named
|
|
76
|
+
* after the file (`index.js` takes its parent directory). A named function
|
|
77
|
+
* expression keeps its own name. `exports = fn` is NOT indexed: rebinding
|
|
78
|
+
* `exports` exports nothing in CommonJS, it only breaks the alias.
|
|
79
|
+
*
|
|
80
|
+
* Two deliberate non-cases. `exports.foo = localFn`, where the value is a
|
|
81
|
+
* locally declared function, needs nothing — the module scope already binds
|
|
82
|
+
* `localFn` and importers already resolve through it. And a CJS export whose
|
|
83
|
+
* name the module ALSO declares lexically is suppressed rather than declared
|
|
84
|
+
* twice: two declarations of one name are ambiguous, and the resolver would
|
|
85
|
+
* drop the intra-module edge entirely.
|
|
86
|
+
*
|
|
87
|
+
* Callable members assigned through a receiver are Methods with an owner edge
|
|
88
|
+
* rather than free functions: `Foo.prototype.bar = fn` and `this.bar = fn`
|
|
89
|
+
* inside a constructor. Ownership resolves to what the file declares, so an
|
|
90
|
+
* owner it cannot see (`External.prototype.x = fn`) claims no edge.
|
|
42
91
|
*/
|
|
43
92
|
export { emitJsScopeCaptures } from './captures.js';
|
|
44
93
|
export { interpretJsImport, interpretJsTypeBinding } from './interpret.js';
|
|
@@ -34,11 +34,60 @@
|
|
|
34
34
|
* resolved.
|
|
35
35
|
* 3. **Dynamic require** — `require(computedPath)` is skipped (non-literal
|
|
36
36
|
* argument — cannot statically resolve the target).
|
|
37
|
-
* 4.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
37
|
+
* 4. **CommonJS `require()` in TypeScript** — `require()` decomposition is a
|
|
38
|
+
* JavaScript-emitter concern, so a `.ts` file's `const m = require('./m')`
|
|
39
|
+
* is not decomposed into an import. The EXPORT side of a `.ts` CommonJS
|
|
40
|
+
* module is now declared (shared with the JS emitter), but an importer
|
|
41
|
+
* written in TypeScript still cannot resolve through it.
|
|
42
|
+
* 5. **`.cjs` module-level `this`** — the CommonJS/ESM gate consults the file
|
|
43
|
+
* extension where it can, but `provider.labelOverride` receives no file
|
|
44
|
+
* path, so a `.cjs` file whose only export is a module-level `this.X = fn`
|
|
45
|
+
* is not labelled. It now emits nothing rather than an ownerless `Method`.
|
|
46
|
+
* 6. **Calling a renamed default-export binding** — `module.exports = fn` IS
|
|
47
|
+
* indexed (#2723, named after the file), but resolving a CALL through a
|
|
48
|
+
* renamed local binding (`const renamed = require('./mod'); renamed()`)
|
|
49
|
+
* needs the finalize layer to treat a called namespace binding as the
|
|
50
|
+
* target module's default export. `const mod = require('./mod'); mod()`
|
|
51
|
+
* happens to resolve because the names coincide.
|
|
52
|
+
* 7. **Anonymous ESM default** — `export default function () {}` (no name)
|
|
53
|
+
* is not indexed either. Same class as the CJS default above, different
|
|
54
|
+
* construct; not addressed by #2723.
|
|
55
|
+
*
|
|
56
|
+
* ## CommonJS export forms (#2723)
|
|
57
|
+
*
|
|
58
|
+
* Each of these declares its name in the module scope, so importers resolve to
|
|
59
|
+
* it by name — `const { foo } = require('./m')` matches directly and a
|
|
60
|
+
* namespace `m.foo()` walks the module's defs:
|
|
61
|
+
*
|
|
62
|
+
* - `exports.foo = function () {}` / `module.exports.foo = (a) => a`, in
|
|
63
|
+
* every value form (function, async, arrow, async arrow, generator).
|
|
64
|
+
* - `const e = exports; e.foo = fn` — an alias bound at module scope. The
|
|
65
|
+
* receiver cannot be pinned in a query, so the member-assignment rules
|
|
66
|
+
* match any identifier receiver and the emitters prune anything that is
|
|
67
|
+
* not the exports object.
|
|
68
|
+
* - `this.foo = fn` at MODULE level of a CommonJS file, where `this` is
|
|
69
|
+
* `module.exports`. Gated on the file being CommonJS — in ESM top-level
|
|
70
|
+
* `this` is undefined and the same line exports nothing.
|
|
71
|
+
* - `exports.foo = lib.imported` / `exports.foo = importedName` — forwarded
|
|
72
|
+
* as a re-export (`reexport-alias`), so callers reach the ORIGINAL
|
|
73
|
+
* definition. A plain import binding would not do: it is private to its
|
|
74
|
+
* module, exactly as in ESM.
|
|
75
|
+
* - `module.exports = fn` — the whole module is the callable, so it is named
|
|
76
|
+
* after the file (`index.js` takes its parent directory). A named function
|
|
77
|
+
* expression keeps its own name. `exports = fn` is NOT indexed: rebinding
|
|
78
|
+
* `exports` exports nothing in CommonJS, it only breaks the alias.
|
|
79
|
+
*
|
|
80
|
+
* Two deliberate non-cases. `exports.foo = localFn`, where the value is a
|
|
81
|
+
* locally declared function, needs nothing — the module scope already binds
|
|
82
|
+
* `localFn` and importers already resolve through it. And a CJS export whose
|
|
83
|
+
* name the module ALSO declares lexically is suppressed rather than declared
|
|
84
|
+
* twice: two declarations of one name are ambiguous, and the resolver would
|
|
85
|
+
* drop the intra-module edge entirely.
|
|
86
|
+
*
|
|
87
|
+
* Callable members assigned through a receiver are Methods with an owner edge
|
|
88
|
+
* rather than free functions: `Foo.prototype.bar = fn` and `this.bar = fn`
|
|
89
|
+
* inside a constructor. Ownership resolves to what the file declares, so an
|
|
90
|
+
* owner it cannot see (`External.prototype.x = fn`) claims no edge.
|
|
42
91
|
*/
|
|
43
92
|
export { emitJsScopeCaptures } from './captures.js';
|
|
44
93
|
export { interpretJsImport, interpretJsTypeBinding } from './interpret.js';
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
* tree-sitter init cost per file.
|
|
47
47
|
*/
|
|
48
48
|
import Parser from 'tree-sitter';
|
|
49
|
+
export declare const JAVASCRIPT_SCOPE_QUERY: string;
|
|
49
50
|
export declare function getJsParser(filePath?: string): Parser;
|
|
50
51
|
export declare function getJsScopeQuery(filePath?: string): Parser.Query;
|
|
51
52
|
/** Validate that a cached Tree was produced by the JS grammar. */
|