cgraphx 2.0.2 → 2.0.3
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/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vue SFC (Single File Component) script extractor.
|
|
4
|
+
*
|
|
5
|
+
* Extracts the <script> / <script setup> block content from .vue files
|
|
6
|
+
* so it can be parsed by the TypeScript tree-sitter grammar.
|
|
7
|
+
*
|
|
8
|
+
* Pure function — no tree-sitter dependency, safe for worker threads.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.isVueSetupTopLevel = void 0;
|
|
12
|
+
exports.extractVueScript = extractVueScript;
|
|
13
|
+
exports.extractTemplateComponents = extractTemplateComponents;
|
|
14
|
+
exports.extractComponentEventBindings = extractComponentEventBindings;
|
|
15
|
+
exports.extractNativeElementEventHandlers = extractNativeElementEventHandlers;
|
|
16
|
+
exports.extractScriptEmitCalls = extractScriptEmitCalls;
|
|
17
|
+
exports.extractTemplateAttributeBindings = extractTemplateAttributeBindings;
|
|
18
|
+
exports.extractVueTemplateEdgeData = extractVueTemplateEdgeData;
|
|
19
|
+
// Closing-tag pattern accepts:
|
|
20
|
+
// - whitespace before `>` — `</script >`, `</script\t\n>`
|
|
21
|
+
// - attribute-like junk after `script` — `</script foo="bar">`,
|
|
22
|
+
// `</script\t\n bar>`
|
|
23
|
+
// - any case — `</SCRIPT>`, `</Script>`
|
|
24
|
+
//
|
|
25
|
+
// HTML5 parses `</script foo>` as a valid close tag (attributes on
|
|
26
|
+
// close tags are ignored by the parser but still terminate the script
|
|
27
|
+
// block). A strict `<\/script\s*>` would miss those forms and let a
|
|
28
|
+
// crafted Vue file hide content from this extractor — exactly the
|
|
29
|
+
// CodeQL `js/bad-tag-filter` failure mode (the published test cases
|
|
30
|
+
// it checks include `</script foo="bar">` and `</script\t\n bar>`).
|
|
31
|
+
//
|
|
32
|
+
// `[^>]*` after `</script` accepts everything up to the next `>`,
|
|
33
|
+
// matching the HTML parser's actual close-tag behaviour. The `i` flag
|
|
34
|
+
// covers the case axis. PR #1330 CI surfaced both the case and
|
|
35
|
+
// attribute axes; this expression closes both at once.
|
|
36
|
+
const SCRIPT_RE = /<script(\s[^>]*)?>([^]*?)<\/script[^>]*>/gi;
|
|
37
|
+
const TEMPLATE_COMPONENT_RE = /<([A-Z][A-Za-z0-9]+)/g;
|
|
38
|
+
const TEMPLATE_KEBAB_COMPONENT_RE = /<([a-z][a-z0-9]*(?:-[a-z0-9]+)+)\b/g;
|
|
39
|
+
// Greedy: matches from the first <template> to the *last* </template>.
|
|
40
|
+
// This is intentional — nested <template v-slot:...> tags are valid Vue
|
|
41
|
+
// syntax and we want the entire outermost template body.
|
|
42
|
+
const TEMPLATE_RE = /<template(\s[^>]*)?>([^]*)<\/template>/;
|
|
43
|
+
const VUE_BUILTIN_KEBAB_TAGS = new Set([
|
|
44
|
+
'router-view',
|
|
45
|
+
'router-link',
|
|
46
|
+
'transition',
|
|
47
|
+
'transition-group',
|
|
48
|
+
'keep-alive',
|
|
49
|
+
'teleport',
|
|
50
|
+
'suspense',
|
|
51
|
+
'component',
|
|
52
|
+
'slot',
|
|
53
|
+
]);
|
|
54
|
+
function countNewlines(text) {
|
|
55
|
+
let count = 0;
|
|
56
|
+
for (let i = 0; i < text.length; i++) {
|
|
57
|
+
if (text.charCodeAt(i) === 10)
|
|
58
|
+
count++;
|
|
59
|
+
}
|
|
60
|
+
return count;
|
|
61
|
+
}
|
|
62
|
+
function kebabToPascal(name) {
|
|
63
|
+
return name
|
|
64
|
+
.split('-')
|
|
65
|
+
.filter((part) => part.length > 0)
|
|
66
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
67
|
+
.join('');
|
|
68
|
+
}
|
|
69
|
+
function isBuiltinKebabTag(tagName) {
|
|
70
|
+
return VUE_BUILTIN_KEBAB_TAGS.has(tagName);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Extract bare `emit('event')` / `$emit('event')` calls from script text.
|
|
74
|
+
*
|
|
75
|
+
* Uses a lightweight lexer state-machine (code vs comments/strings), so:
|
|
76
|
+
* - ignores `emit(...)` in comments and string literals
|
|
77
|
+
* - ignores property calls like `socket.emit(...)` / `this.$emit(...)`
|
|
78
|
+
* - captures only literal-string event names
|
|
79
|
+
*/
|
|
80
|
+
function collectBareEmitEventNames(input) {
|
|
81
|
+
let Mode;
|
|
82
|
+
(function (Mode) {
|
|
83
|
+
Mode[Mode["Code"] = 0] = "Code";
|
|
84
|
+
Mode[Mode["SingleQuote"] = 1] = "SingleQuote";
|
|
85
|
+
Mode[Mode["DoubleQuote"] = 2] = "DoubleQuote";
|
|
86
|
+
Mode[Mode["Template"] = 3] = "Template";
|
|
87
|
+
Mode[Mode["LineComment"] = 4] = "LineComment";
|
|
88
|
+
Mode[Mode["BlockComment"] = 5] = "BlockComment";
|
|
89
|
+
})(Mode || (Mode = {}));
|
|
90
|
+
const events = [];
|
|
91
|
+
const seen = new Set();
|
|
92
|
+
let mode = Mode.Code;
|
|
93
|
+
const isIdentChar = (c) => /[A-Za-z0-9_$]/.test(c);
|
|
94
|
+
const skipSpaces = (idx) => {
|
|
95
|
+
let i = idx;
|
|
96
|
+
while (i < input.length && /\s/.test(input[i]))
|
|
97
|
+
i++;
|
|
98
|
+
return i;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Return true if the token immediately before the `.` at `dotIdx` is the
|
|
102
|
+
* keyword `this` and is not itself a property access (e.g. not `foo.this`).
|
|
103
|
+
* Used to allow `this.$emit(...)` while blocking `socket.emit(...)`.
|
|
104
|
+
*/
|
|
105
|
+
const lookbackIsThis = (dotIdx) => {
|
|
106
|
+
let j = dotIdx - 1; // step past the '.'
|
|
107
|
+
while (j >= 0 && /\s/.test(input[j]))
|
|
108
|
+
j--;
|
|
109
|
+
if (j < 3)
|
|
110
|
+
return false;
|
|
111
|
+
if (input.slice(j - 3, j + 1) !== 'this')
|
|
112
|
+
return false;
|
|
113
|
+
// Ensure 'this' is not itself a property target (e.g. foo.this)
|
|
114
|
+
const prevOfThis = j >= 4 ? input[j - 4] : '';
|
|
115
|
+
return !(prevOfThis.length > 0 && (isIdentChar(prevOfThis) || prevOfThis === '.'));
|
|
116
|
+
};
|
|
117
|
+
const tryConsumeEmitCall = (idx) => {
|
|
118
|
+
const hasDollar = input[idx] === '$';
|
|
119
|
+
const name = hasDollar ? '$emit' : 'emit';
|
|
120
|
+
if (!input.startsWith(name, idx))
|
|
121
|
+
return idx;
|
|
122
|
+
const prev = idx > 0 ? input[idx - 1] : '';
|
|
123
|
+
if (prev.length > 0 && isIdentChar(prev))
|
|
124
|
+
return idx;
|
|
125
|
+
if (prev === '.') {
|
|
126
|
+
// Allow `this.$emit(...)` / `this.emit(...)` but block `socket.emit(...)`.
|
|
127
|
+
if (!lookbackIsThis(idx - 1))
|
|
128
|
+
return idx;
|
|
129
|
+
}
|
|
130
|
+
const afterName = idx + name.length;
|
|
131
|
+
const next = afterName < input.length ? input[afterName] : '';
|
|
132
|
+
if (next.length > 0 && isIdentChar(next))
|
|
133
|
+
return idx;
|
|
134
|
+
let i = skipSpaces(afterName);
|
|
135
|
+
if (input[i] !== '(')
|
|
136
|
+
return idx;
|
|
137
|
+
i = skipSpaces(i + 1);
|
|
138
|
+
const quote = input[i];
|
|
139
|
+
if (quote !== "'" && quote !== '"')
|
|
140
|
+
return idx;
|
|
141
|
+
let eventName = '';
|
|
142
|
+
i++;
|
|
143
|
+
while (i < input.length) {
|
|
144
|
+
const ch = input[i];
|
|
145
|
+
if (ch === '\\') {
|
|
146
|
+
i += 2;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (ch === quote)
|
|
150
|
+
break;
|
|
151
|
+
eventName += ch;
|
|
152
|
+
i++;
|
|
153
|
+
}
|
|
154
|
+
if (i >= input.length)
|
|
155
|
+
return idx;
|
|
156
|
+
// Allow simple names ("save"), hyphenated names ("user-loaded"), and
|
|
157
|
+
// update modifier patterns ("update:modelValue", "update:model-value").
|
|
158
|
+
if (/^[A-Za-z$_][A-Za-z0-9:_$-]*$/.test(eventName) && !seen.has(eventName)) {
|
|
159
|
+
seen.add(eventName);
|
|
160
|
+
events.push(eventName);
|
|
161
|
+
}
|
|
162
|
+
return i;
|
|
163
|
+
};
|
|
164
|
+
for (let i = 0; i < input.length; i++) {
|
|
165
|
+
const ch = input[i];
|
|
166
|
+
const next = i + 1 < input.length ? input[i + 1] : '';
|
|
167
|
+
if (mode === Mode.Code) {
|
|
168
|
+
const consumedAt = tryConsumeEmitCall(i);
|
|
169
|
+
if (consumedAt !== i) {
|
|
170
|
+
i = consumedAt;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (ch === "'" || ch === '"' || ch === '`') {
|
|
174
|
+
mode = ch === "'" ? Mode.SingleQuote : ch === '"' ? Mode.DoubleQuote : Mode.Template;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (ch === '/' && next === '/') {
|
|
178
|
+
mode = Mode.LineComment;
|
|
179
|
+
i++;
|
|
180
|
+
}
|
|
181
|
+
else if (ch === '/' && next === '*') {
|
|
182
|
+
mode = Mode.BlockComment;
|
|
183
|
+
i++;
|
|
184
|
+
}
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (mode === Mode.LineComment) {
|
|
188
|
+
if (ch === '\n') {
|
|
189
|
+
mode = Mode.Code;
|
|
190
|
+
}
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (mode === Mode.BlockComment) {
|
|
194
|
+
if (ch === '*' && next === '/') {
|
|
195
|
+
i++;
|
|
196
|
+
mode = Mode.Code;
|
|
197
|
+
}
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (ch === '\\') {
|
|
201
|
+
i++;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if ((mode === Mode.SingleQuote && ch === "'") ||
|
|
205
|
+
(mode === Mode.DoubleQuote && ch === '"') ||
|
|
206
|
+
(mode === Mode.Template && ch === '`')) {
|
|
207
|
+
mode = Mode.Code;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return events;
|
|
211
|
+
}
|
|
212
|
+
function parseScriptBlock(attrs, content, precedingText) {
|
|
213
|
+
const isSetup = attrs != null && /\bsetup\b/.test(attrs);
|
|
214
|
+
const langMatch = attrs?.match(/\blang\s*=\s*["']([^"']+)["']/);
|
|
215
|
+
const lang = langMatch ? langMatch[1] : '';
|
|
216
|
+
// +1 for the newline after the opening <script...> tag
|
|
217
|
+
const lineOffset = countNewlines(precedingText) + 1;
|
|
218
|
+
return { content, lineOffset, isSetup, lang };
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Extract script content from a Vue SFC.
|
|
222
|
+
*
|
|
223
|
+
* When both <script> and <script setup> are present, the content of all
|
|
224
|
+
* blocks is combined (non-setup first, then setup) so the full script
|
|
225
|
+
* surface is available to the knowledge graph.
|
|
226
|
+
*/
|
|
227
|
+
function extractVueScript(vueContent) {
|
|
228
|
+
const blocks = [];
|
|
229
|
+
let match;
|
|
230
|
+
// Reset lastIndex for reuse of the global regex
|
|
231
|
+
SCRIPT_RE.lastIndex = 0;
|
|
232
|
+
while ((match = SCRIPT_RE.exec(vueContent)) !== null) {
|
|
233
|
+
const precedingText = vueContent.slice(0, match.index + match[0].indexOf(match[2]));
|
|
234
|
+
blocks.push(parseScriptBlock(match[1], match[2], precedingText));
|
|
235
|
+
}
|
|
236
|
+
if (blocks.length === 0)
|
|
237
|
+
return null;
|
|
238
|
+
// Merge all blocks: non-setup first, then setup, so content order is stable.
|
|
239
|
+
const nonSetupBlocks = blocks.filter((b) => !b.isSetup);
|
|
240
|
+
const setupBlocks = blocks.filter((b) => b.isSetup);
|
|
241
|
+
const ordered = [...nonSetupBlocks, ...setupBlocks];
|
|
242
|
+
const combinedContent = ordered.map((b) => b.content).join('\n');
|
|
243
|
+
const lineOffset = ordered[0].lineOffset;
|
|
244
|
+
// Only use JavaScript grammar when ALL blocks are explicitly lang="js"
|
|
245
|
+
// or lang="jsx". If any block omits lang or uses ts/tsx, TypeScript wins.
|
|
246
|
+
const allBlocksJs = blocks.length > 0 && blocks.every((b) => b.lang === 'js' || b.lang === 'jsx');
|
|
247
|
+
const lang = allBlocksJs ? 'js' : '';
|
|
248
|
+
return {
|
|
249
|
+
scriptContent: combinedContent,
|
|
250
|
+
lineOffset,
|
|
251
|
+
isSetup: blocks.some((b) => b.isSetup),
|
|
252
|
+
lang,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Vue <script setup>: all top-level bindings are implicitly exported.
|
|
257
|
+
* Returns true if the node (or any ancestor) has the `program` root as its
|
|
258
|
+
* direct parent — i.e. the node is at the top level of the script block.
|
|
259
|
+
*
|
|
260
|
+
* Shared between the worker and sequential parsing paths.
|
|
261
|
+
*/
|
|
262
|
+
const isVueSetupTopLevel = (node) => {
|
|
263
|
+
if (!node)
|
|
264
|
+
return false;
|
|
265
|
+
let current = node;
|
|
266
|
+
while (current) {
|
|
267
|
+
if (current.parent?.type === 'program')
|
|
268
|
+
return true;
|
|
269
|
+
current = current.parent;
|
|
270
|
+
}
|
|
271
|
+
return false;
|
|
272
|
+
};
|
|
273
|
+
exports.isVueSetupTopLevel = isVueSetupTopLevel;
|
|
274
|
+
/**
|
|
275
|
+
* Extract PascalCase component names used in <template>.
|
|
276
|
+
* Returns deduplicated component names (e.g., ["MyButton", "AppHeader"]).
|
|
277
|
+
*/
|
|
278
|
+
function extractTemplateComponents(vueContent) {
|
|
279
|
+
const templateMatch = TEMPLATE_RE.exec(vueContent);
|
|
280
|
+
if (!templateMatch)
|
|
281
|
+
return [];
|
|
282
|
+
const templateContent = templateMatch[2];
|
|
283
|
+
const components = new Set();
|
|
284
|
+
let componentMatch;
|
|
285
|
+
TEMPLATE_COMPONENT_RE.lastIndex = 0;
|
|
286
|
+
while ((componentMatch = TEMPLATE_COMPONENT_RE.exec(templateContent)) !== null) {
|
|
287
|
+
components.add(componentMatch[1]);
|
|
288
|
+
}
|
|
289
|
+
TEMPLATE_KEBAB_COMPONENT_RE.lastIndex = 0;
|
|
290
|
+
while ((componentMatch = TEMPLATE_KEBAB_COMPONENT_RE.exec(templateContent)) !== null) {
|
|
291
|
+
if (isBuiltinKebabTag(componentMatch[1]))
|
|
292
|
+
continue;
|
|
293
|
+
components.add(kebabToPascal(componentMatch[1]));
|
|
294
|
+
}
|
|
295
|
+
return [...components];
|
|
296
|
+
}
|
|
297
|
+
// ── Per-element event binding extraction ──────────────────────────────────
|
|
298
|
+
//
|
|
299
|
+
// Three sibling regexes capture opening tags distinguished by PascalCase
|
|
300
|
+
// (Vue components), kebab-case (Vue components in kebab form), and simple
|
|
301
|
+
// lowercase (native HTML elements). All stop their attribute-block capture
|
|
302
|
+
// at the first `>` with a bounded span of at most 512 characters to avoid
|
|
303
|
+
// pathological backtracking on large template files (ReDoS mitigation).
|
|
304
|
+
// Multi-line tags whose attribute block contains a literal `>` are documented
|
|
305
|
+
// as a known limitation (#1647).
|
|
306
|
+
//
|
|
307
|
+
// NATIVE_TAG_RE uses `(?![A-Za-z0-9-])` to prevent matching the `post` prefix
|
|
308
|
+
// of a kebab-case component tag like `<post-list>` — such tags are handled by
|
|
309
|
+
// KEBAB_COMPONENT_TAG_RE, not NATIVE_TAG_RE.
|
|
310
|
+
const COMPONENT_TAG_RE = /<([A-Z][A-Za-z0-9]+)([^>]{0,512}?)(?:\/>|>)/g;
|
|
311
|
+
const KEBAB_COMPONENT_TAG_RE = /<([a-z][a-z0-9]*(?:-[a-z0-9]+)+)([^>]{0,512}?)(?:\/>|>)/g;
|
|
312
|
+
const NATIVE_TAG_RE = /<([a-z][a-z0-9]*)(?![A-Za-z0-9-])([^>]{0,512}?)(?:\/>|>)/g;
|
|
313
|
+
// Within any tag's attribute block: matches Vue event bindings.
|
|
314
|
+
// @action="handleAction"
|
|
315
|
+
// @keyup.enter="submit"
|
|
316
|
+
// @user-loaded="onLoaded" — hyphenated event names
|
|
317
|
+
// @update:model-value="onChange" — update modifier with colon
|
|
318
|
+
// v-on:click="onClick"
|
|
319
|
+
const TAG_EVENT_RE = /(?:@|v-on:)([\w:.-]+)\s*=\s*["']([A-Za-z_$][A-Za-z0-9_$]*)["']/g;
|
|
320
|
+
// ── Script emit() call extraction ─────────────────────────────────────────
|
|
321
|
+
// Matches simple variable references in Vue bound-attribute values.
|
|
322
|
+
// Captures only bare identifiers — not member-access (":key=\"post.id\""),
|
|
323
|
+
// literals (":id=\"1\""), or expressions (":val=\"a + b\"").
|
|
324
|
+
//
|
|
325
|
+
// :userId="currentUserId" → "currentUserId"
|
|
326
|
+
// :posts="allPosts" → "allPosts"
|
|
327
|
+
// v-bind:disabled="isLoading" → "isLoading"
|
|
328
|
+
// :key="post.id" — skipped (member access)
|
|
329
|
+
// :id="1" — skipped (literal)
|
|
330
|
+
const BOUND_ATTR_RE = /(?::[\w-]+|v-bind:[\w-]+)\s*=\s*["']([A-Za-z_$][A-Za-z0-9_$]*)["']/g;
|
|
331
|
+
/**
|
|
332
|
+
* Extract Vue component event bindings from a `<template>` block.
|
|
333
|
+
*
|
|
334
|
+
* Scans PascalCase component elements (e.g. `<PostList>`, `<UserCard>`) and
|
|
335
|
+
* returns each `@event="handler"` binding found in the element's attribute
|
|
336
|
+
* block. Native HTML element event handlers (`@click` on `<button>`, etc.)
|
|
337
|
+
* are intentionally excluded — only component-to-component event bindings
|
|
338
|
+
* that go through Vue's `emit()` / `defineEmits` system are included.
|
|
339
|
+
*
|
|
340
|
+
* **Limitation:** component tags whose attribute block spans multiple lines
|
|
341
|
+
* and contains a `>` inside an attribute value are not captured (the regex
|
|
342
|
+
* stops at the first `>`). Full template AST parsing would be required for
|
|
343
|
+
* those edge cases (tracked in #1647).
|
|
344
|
+
*/
|
|
345
|
+
function extractComponentEventBindings(vueContent) {
|
|
346
|
+
const templateMatch = TEMPLATE_RE.exec(vueContent);
|
|
347
|
+
if (!templateMatch)
|
|
348
|
+
return [];
|
|
349
|
+
const templateContent = templateMatch[2];
|
|
350
|
+
const bindings = [];
|
|
351
|
+
const seen = new Set();
|
|
352
|
+
COMPONENT_TAG_RE.lastIndex = 0;
|
|
353
|
+
let tagMatch;
|
|
354
|
+
while ((tagMatch = COMPONENT_TAG_RE.exec(templateContent)) !== null) {
|
|
355
|
+
const componentName = tagMatch[1];
|
|
356
|
+
const attrs = tagMatch[2];
|
|
357
|
+
TAG_EVENT_RE.lastIndex = 0;
|
|
358
|
+
let eventMatch;
|
|
359
|
+
while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
|
|
360
|
+
const eventName = eventMatch[1];
|
|
361
|
+
const handlerName = eventMatch[2];
|
|
362
|
+
const key = `${componentName}::${eventName}::${handlerName}`;
|
|
363
|
+
if (seen.has(key))
|
|
364
|
+
continue;
|
|
365
|
+
seen.add(key);
|
|
366
|
+
bindings.push({ componentName, eventName, handlerName });
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
KEBAB_COMPONENT_TAG_RE.lastIndex = 0;
|
|
370
|
+
while ((tagMatch = KEBAB_COMPONENT_TAG_RE.exec(templateContent)) !== null) {
|
|
371
|
+
if (isBuiltinKebabTag(tagMatch[1]))
|
|
372
|
+
continue;
|
|
373
|
+
const componentName = kebabToPascal(tagMatch[1]);
|
|
374
|
+
const attrs = tagMatch[2];
|
|
375
|
+
TAG_EVENT_RE.lastIndex = 0;
|
|
376
|
+
let eventMatch;
|
|
377
|
+
while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
|
|
378
|
+
const eventName = eventMatch[1];
|
|
379
|
+
const handlerName = eventMatch[2];
|
|
380
|
+
const key = `${componentName}::${eventName}::${handlerName}`;
|
|
381
|
+
if (seen.has(key))
|
|
382
|
+
continue;
|
|
383
|
+
seen.add(key);
|
|
384
|
+
bindings.push({ componentName, eventName, handlerName });
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return bindings;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Extract event handler names bound to native HTML elements in the template.
|
|
391
|
+
*
|
|
392
|
+
* Only processes lowercase-named elements (`<button>`, `<input>`, `<div>`,
|
|
393
|
+
* etc.) — PascalCase component elements are handled by
|
|
394
|
+
* `extractComponentEventBindings`. Returns bare handler identifiers only;
|
|
395
|
+
* inline expressions with arguments or arrow functions are excluded.
|
|
396
|
+
*
|
|
397
|
+
* These handlers represent direct DOM-event→function relationships and
|
|
398
|
+
* are emitted as `CALLS` edges (not `BINDS_EVENT_HANDLER`), because native
|
|
399
|
+
* events are synchronous browser callbacks, not Vue's component-event system.
|
|
400
|
+
*/
|
|
401
|
+
function extractNativeElementEventHandlers(vueContent) {
|
|
402
|
+
const templateMatch = TEMPLATE_RE.exec(vueContent);
|
|
403
|
+
if (!templateMatch)
|
|
404
|
+
return [];
|
|
405
|
+
const templateContent = templateMatch[2];
|
|
406
|
+
const handlers = [];
|
|
407
|
+
NATIVE_TAG_RE.lastIndex = 0;
|
|
408
|
+
let tagMatch;
|
|
409
|
+
while ((tagMatch = NATIVE_TAG_RE.exec(templateContent)) !== null) {
|
|
410
|
+
const attrs = tagMatch[2];
|
|
411
|
+
TAG_EVENT_RE.lastIndex = 0;
|
|
412
|
+
let eventMatch;
|
|
413
|
+
while ((eventMatch = TAG_EVENT_RE.exec(attrs)) !== null) {
|
|
414
|
+
handlers.push(eventMatch[2]);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return handlers;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Extract `emit('eventName', ...)` calls from a Vue SFC's `<script>` block.
|
|
421
|
+
*
|
|
422
|
+
* Scans the raw SFC source (full `.vue` file), extracts the script content,
|
|
423
|
+
* then finds bare `emit('...')` calls. Only captures literal string event
|
|
424
|
+
* names — dynamic expressions (`emit(eventName)`) are excluded.
|
|
425
|
+
*
|
|
426
|
+
* Returns deduplicated emit declarations.
|
|
427
|
+
*/
|
|
428
|
+
function extractScriptEmitCalls(vueContent, options = {}) {
|
|
429
|
+
const sourceKind = options.sourceKind ?? 'full-sfc';
|
|
430
|
+
const scriptText = sourceKind === 'pre-extracted-script'
|
|
431
|
+
? vueContent
|
|
432
|
+
: (extractVueScript(vueContent)?.scriptContent ?? null);
|
|
433
|
+
if (!scriptText)
|
|
434
|
+
return [];
|
|
435
|
+
return collectBareEmitEventNames(scriptText).map((eventName) => ({ eventName }));
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Extract variable identifiers from Vue template bound-attribute values.
|
|
439
|
+
*
|
|
440
|
+
* Covers `:prop="varName"` and `v-bind:prop="varName"` patterns where
|
|
441
|
+
* the value is a single plain identifier. Member-access expressions
|
|
442
|
+
* (`:key="post.id"`) and literals are excluded by design.
|
|
443
|
+
*
|
|
444
|
+
* Returns deduplicated identifier names.
|
|
445
|
+
*/
|
|
446
|
+
function extractTemplateAttributeBindings(vueContent) {
|
|
447
|
+
const templateMatch = TEMPLATE_RE.exec(vueContent);
|
|
448
|
+
if (!templateMatch)
|
|
449
|
+
return [];
|
|
450
|
+
const templateContent = templateMatch[2];
|
|
451
|
+
const vars = new Set();
|
|
452
|
+
let match;
|
|
453
|
+
BOUND_ATTR_RE.lastIndex = 0;
|
|
454
|
+
while ((match = BOUND_ATTR_RE.exec(templateContent)) !== null) {
|
|
455
|
+
vars.add(match[1]);
|
|
456
|
+
}
|
|
457
|
+
return [...vars];
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Extract all template-derived edge data from a Vue SFC in a single pass.
|
|
461
|
+
*
|
|
462
|
+
* Parses the `<template>` block once and the `<script>` block once, then
|
|
463
|
+
* runs all five extractors on the pre-parsed content rather than repeating
|
|
464
|
+
* the regex on every individual call. Used by `emitPostResolutionEdges`
|
|
465
|
+
* to avoid multiple full-file scans per `.vue` file.
|
|
466
|
+
*/
|
|
467
|
+
function extractVueTemplateEdgeData(vueContent, options = {}) {
|
|
468
|
+
// Extract template content once.
|
|
469
|
+
const templateMatch = TEMPLATE_RE.exec(vueContent);
|
|
470
|
+
const tmpl = templateMatch ? templateMatch[2] : '';
|
|
471
|
+
// Template components (PascalCase + kebab-case).
|
|
472
|
+
const componentSet = new Set();
|
|
473
|
+
if (tmpl) {
|
|
474
|
+
TEMPLATE_COMPONENT_RE.lastIndex = 0;
|
|
475
|
+
let m;
|
|
476
|
+
while ((m = TEMPLATE_COMPONENT_RE.exec(tmpl)) !== null)
|
|
477
|
+
componentSet.add(m[1]);
|
|
478
|
+
TEMPLATE_KEBAB_COMPONENT_RE.lastIndex = 0;
|
|
479
|
+
while ((m = TEMPLATE_KEBAB_COMPONENT_RE.exec(tmpl)) !== null) {
|
|
480
|
+
if (!isBuiltinKebabTag(m[1]))
|
|
481
|
+
componentSet.add(kebabToPascal(m[1]));
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
// Native element event handlers.
|
|
485
|
+
const nativeHandlers = [];
|
|
486
|
+
if (tmpl) {
|
|
487
|
+
NATIVE_TAG_RE.lastIndex = 0;
|
|
488
|
+
let tagM;
|
|
489
|
+
while ((tagM = NATIVE_TAG_RE.exec(tmpl)) !== null) {
|
|
490
|
+
TAG_EVENT_RE.lastIndex = 0;
|
|
491
|
+
let evM;
|
|
492
|
+
while ((evM = TAG_EVENT_RE.exec(tagM[2])) !== null)
|
|
493
|
+
nativeHandlers.push(evM[2]);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
// Component event bindings.
|
|
497
|
+
const componentBindings = [];
|
|
498
|
+
const bindingSeen = new Set();
|
|
499
|
+
const processComponentAttrs = (componentName, attrs) => {
|
|
500
|
+
TAG_EVENT_RE.lastIndex = 0;
|
|
501
|
+
let evM;
|
|
502
|
+
while ((evM = TAG_EVENT_RE.exec(attrs)) !== null) {
|
|
503
|
+
const key = `${componentName}::${evM[1]}::${evM[2]}`;
|
|
504
|
+
if (!bindingSeen.has(key)) {
|
|
505
|
+
bindingSeen.add(key);
|
|
506
|
+
componentBindings.push({ componentName, eventName: evM[1], handlerName: evM[2] });
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
if (tmpl) {
|
|
511
|
+
COMPONENT_TAG_RE.lastIndex = 0;
|
|
512
|
+
let tagM;
|
|
513
|
+
while ((tagM = COMPONENT_TAG_RE.exec(tmpl)) !== null)
|
|
514
|
+
processComponentAttrs(tagM[1], tagM[2]);
|
|
515
|
+
KEBAB_COMPONENT_TAG_RE.lastIndex = 0;
|
|
516
|
+
while ((tagM = KEBAB_COMPONENT_TAG_RE.exec(tmpl)) !== null) {
|
|
517
|
+
if (!isBuiltinKebabTag(tagM[1]))
|
|
518
|
+
processComponentAttrs(kebabToPascal(tagM[1]), tagM[2]);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
// Script emit() calls.
|
|
522
|
+
const sourceKind = options.sourceKind ?? 'full-sfc';
|
|
523
|
+
const scriptText = sourceKind === 'pre-extracted-script'
|
|
524
|
+
? vueContent
|
|
525
|
+
: (extractVueScript(vueContent)?.scriptContent ?? null);
|
|
526
|
+
const scriptEmitCalls = scriptText
|
|
527
|
+
? collectBareEmitEventNames(scriptText).map((eventName) => ({ eventName }))
|
|
528
|
+
: [];
|
|
529
|
+
// Bound attribute bindings.
|
|
530
|
+
const attrVars = new Set();
|
|
531
|
+
if (tmpl) {
|
|
532
|
+
BOUND_ATTR_RE.lastIndex = 0;
|
|
533
|
+
let m;
|
|
534
|
+
while ((m = BOUND_ATTR_RE.exec(tmpl)) !== null)
|
|
535
|
+
attrVars.add(m[1]);
|
|
536
|
+
}
|
|
537
|
+
return {
|
|
538
|
+
templateComponents: [...componentSet],
|
|
539
|
+
nativeEventHandlers: nativeHandlers,
|
|
540
|
+
componentEventBindings: componentBindings,
|
|
541
|
+
scriptEmitCalls,
|
|
542
|
+
templateAttributeBindings: [...attrVars],
|
|
543
|
+
};
|
|
544
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The id rules for a callable nested inside another callable (#2699).
|
|
4
|
+
*
|
|
5
|
+
* Extracted from `parse-worker.ts` for one reason: **three** phases there
|
|
6
|
+
* build these ids independently — the definition phase
|
|
7
|
+
* (`callableOwnQualifiedName`), the caller-attribution phase
|
|
8
|
+
* (`findEnclosingFunctionId`), and the worker-path node-id derivation in
|
|
9
|
+
* `processFileGroup`. An id they compute differently is not a test failure;
|
|
10
|
+
* the caller attaches to a node that does not exist, so the edge is dropped
|
|
11
|
+
* rather than reported. "Zero dangling edges" is what that looks like from
|
|
12
|
+
* outside, which is why the divergence #2714 fixed went unnoticed.
|
|
13
|
+
*
|
|
14
|
+
* These functions are pure and free of module-scope side effects, unlike
|
|
15
|
+
* `parse-worker.ts`, which posts a `ready` message to `parentPort` at import
|
|
16
|
+
* and therefore cannot be value-imported by a unit test at all. That is what
|
|
17
|
+
* makes the rule testable rather than merely commented.
|
|
18
|
+
*
|
|
19
|
+
* See `parse-worker.ts`'s `enclosingCallablePrefix` for how the prefix passed
|
|
20
|
+
* in here is derived, and why only genuinely nested callables get one.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.nestedCallableQualifiedName = exports.localIdentity = void 0;
|
|
24
|
+
exports.boundCallableStartRow = boundCallableStartRow;
|
|
25
|
+
const definition_id_js_1 = require("../scope-resolution/utils/definition-id.js");
|
|
26
|
+
const LOCAL_IDENTITY_SUFFIX = /@\d+:\d+$/;
|
|
27
|
+
function simpleDefinitionName(def) {
|
|
28
|
+
const qualifiedName = def.qualifiedName;
|
|
29
|
+
if (qualifiedName === undefined)
|
|
30
|
+
return undefined;
|
|
31
|
+
const dot = qualifiedName.lastIndexOf('.');
|
|
32
|
+
const tail = dot === -1 ? qualifiedName : qualifiedName.slice(dot + 1);
|
|
33
|
+
return tail.replace(LOCAL_IDENTITY_SUFFIX, '');
|
|
34
|
+
}
|
|
35
|
+
function containsPosition(node, row, column) {
|
|
36
|
+
const start = node.startPosition;
|
|
37
|
+
const end = node.endPosition;
|
|
38
|
+
if (row < start.row || row > end.row)
|
|
39
|
+
return false;
|
|
40
|
+
if (row === start.row && column < start.column)
|
|
41
|
+
return false;
|
|
42
|
+
if (row === end.row && column > end.column)
|
|
43
|
+
return false;
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Zero-based start row that keys the graph-to-scope position join for a bound
|
|
48
|
+
* callable (#2735).
|
|
49
|
+
*
|
|
50
|
+
* Graph-node queries may anchor on an outer binding wrapper while the scope
|
|
51
|
+
* channel anchors on the inner callable. The join is line-only, so a multi-line
|
|
52
|
+
* binding needs the graph node's `startLine` to follow the semantic definition.
|
|
53
|
+
*
|
|
54
|
+
* `ParsedFile.localDefs` is the language-agnostic source of that position.
|
|
55
|
+
* Matching uses only the canonical label, name, and source range; shared worker
|
|
56
|
+
* code does not need to know grammar node types or initializer field names.
|
|
57
|
+
*
|
|
58
|
+
* Node ids stay on the binding wrapper via `localIdentity(definitionNode)`.
|
|
59
|
+
* Missing or ambiguous semantic matches retain the wrapper row, preserving the
|
|
60
|
+
* existing fail-closed behavior.
|
|
61
|
+
*/
|
|
62
|
+
function boundCallableStartRow(definitionNode, nodeName, nodeLabel, localDefs, nameNode) {
|
|
63
|
+
if (localDefs === undefined)
|
|
64
|
+
return definitionNode.startPosition.row;
|
|
65
|
+
const origin = nameNode?.startPosition ?? definitionNode.startPosition;
|
|
66
|
+
let best;
|
|
67
|
+
let tied = false;
|
|
68
|
+
for (const def of localDefs) {
|
|
69
|
+
if (def.type !== nodeLabel || simpleDefinitionName(def) !== nodeName)
|
|
70
|
+
continue;
|
|
71
|
+
const position = (0, definition_id_js_1.definitionIdPosition)(def.nodeId, def.filePath);
|
|
72
|
+
if (position === undefined)
|
|
73
|
+
continue;
|
|
74
|
+
const row = position.line - 1;
|
|
75
|
+
if (!containsPosition(definitionNode, row, position.column))
|
|
76
|
+
continue;
|
|
77
|
+
const distance = Math.abs(row - origin.row) * 1_000_000 + Math.abs(position.column - origin.column);
|
|
78
|
+
if (best === undefined || distance < best.distance) {
|
|
79
|
+
best = { row, distance };
|
|
80
|
+
tied = false;
|
|
81
|
+
}
|
|
82
|
+
else if (distance === best.distance && row !== best.row) {
|
|
83
|
+
tied = true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return best !== undefined && !tied ? best.row : definitionNode.startPosition.row;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A function-local callable's own name segment: its name plus its declaration
|
|
90
|
+
* position.
|
|
91
|
+
*
|
|
92
|
+
* The name chain alone is not enough, and the gap is the language's, not the
|
|
93
|
+
* grammar's: ECMAScript creates an environment record per function AND per
|
|
94
|
+
* block, so sibling blocks in one function hold genuinely different bindings —
|
|
95
|
+
*
|
|
96
|
+
* function outer(a) {
|
|
97
|
+
* if (a) { const pick = …; return pick(1); } // one binding
|
|
98
|
+
* else { const pick = …; return pick(2); } // a DIFFERENT binding
|
|
99
|
+
* }
|
|
100
|
+
*
|
|
101
|
+
* — and both are `outer.pick` by name. Putting a block token in the qualifier
|
|
102
|
+
* would tag every local inside any `if`, the common case, and buy nothing over
|
|
103
|
+
* putting the position on the declaration itself: a declaration's own position
|
|
104
|
+
* is unique across every environment record it could belong to, without the
|
|
105
|
+
* qualifier having to enumerate them. One rule, no conditionals, O(1).
|
|
106
|
+
*
|
|
107
|
+
* Applied ONLY to locals. Top-level functions and class methods keep their
|
|
108
|
+
* bare/class-qualified ids, which is what keeps this off the symbols other
|
|
109
|
+
* files, saved queries and stored references actually address.
|
|
110
|
+
*/
|
|
111
|
+
const localIdentity = (node, name) => `${name}@${node.startPosition.row}:${node.startPosition.column}`;
|
|
112
|
+
exports.localIdentity = localIdentity;
|
|
113
|
+
/**
|
|
114
|
+
* The qualified name of a callable nested inside another callable — THE single
|
|
115
|
+
* definition of that rule, shared by all three id-building phases.
|
|
116
|
+
*
|
|
117
|
+
* A comment asking three call sites to stay in step is exactly the invariant
|
|
118
|
+
* that rots; routing them through one function makes divergence require
|
|
119
|
+
* deleting a call rather than editing a duplicated expression.
|
|
120
|
+
*/
|
|
121
|
+
const nestedCallableQualifiedName = (prefix, node, name) => `${prefix}.${(0, exports.localIdentity)(node, name)}`;
|
|
122
|
+
exports.nestedCallableQualifiedName = nestedCallableQualifiedName;
|