cgraphx 2.0.1 → 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/.claude-template/FLOW-MAP.md +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- 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/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.js.map +1 -1
- 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,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JVM import resolution — internal helpers (Java + Kotlin).
|
|
4
|
+
*
|
|
5
|
+
* Strategies live in configs/jvm.ts.
|
|
6
|
+
* This file contains shared helpers for wildcard/member resolution
|
|
7
|
+
* and the Kotlin wildcard preprocessor.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.appendKotlinWildcard = exports.KOTLIN_EXTENSIONS = void 0;
|
|
11
|
+
exports.resolveJvmWildcard = resolveJvmWildcard;
|
|
12
|
+
exports.resolveJvmMemberImport = resolveJvmMemberImport;
|
|
13
|
+
/** Kotlin file extensions for JVM resolver reuse */
|
|
14
|
+
exports.KOTLIN_EXTENSIONS = ['.kt', '.kts'];
|
|
15
|
+
/**
|
|
16
|
+
* Append .* to a Kotlin import path if the AST has a wildcard_import sibling node.
|
|
17
|
+
* Pure function — returns a new string without mutating the input.
|
|
18
|
+
*/
|
|
19
|
+
const appendKotlinWildcard = (importPath, importNode) => {
|
|
20
|
+
for (let i = 0; i < importNode.childCount; i++) {
|
|
21
|
+
if (importNode.child(i)?.type === 'wildcard_import') {
|
|
22
|
+
return importPath.endsWith('.*') ? importPath : `${importPath}.*`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return importPath;
|
|
26
|
+
};
|
|
27
|
+
exports.appendKotlinWildcard = appendKotlinWildcard;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve a JVM wildcard import (com.example.*) to all matching files.
|
|
30
|
+
* Works for both Java (.java) and Kotlin (.kt, .kts).
|
|
31
|
+
*/
|
|
32
|
+
function resolveJvmWildcard(importPath, normalizedFileList, allFileList, extensions, index) {
|
|
33
|
+
// "com.example.util.*" -> "com/example/util"
|
|
34
|
+
const packagePath = importPath.slice(0, -2).replace(/\./g, '/');
|
|
35
|
+
if (index) {
|
|
36
|
+
const candidates = extensions.flatMap((ext) => index.getFilesInDir(packagePath, ext));
|
|
37
|
+
// Filter to only direct children (no subdirectories)
|
|
38
|
+
const packageSuffix = '/' + packagePath + '/';
|
|
39
|
+
const packagePrefix = packagePath + '/';
|
|
40
|
+
return candidates.filter((f) => {
|
|
41
|
+
const normalized = f.replace(/\\/g, '/');
|
|
42
|
+
// Match both nested (src/models/User.kt) and root-level (models/User.kt) packages
|
|
43
|
+
let afterPkg;
|
|
44
|
+
const idx = normalized.lastIndexOf(packageSuffix);
|
|
45
|
+
if (idx >= 0) {
|
|
46
|
+
afterPkg = normalized.substring(idx + packageSuffix.length);
|
|
47
|
+
}
|
|
48
|
+
else if (normalized.startsWith(packagePrefix)) {
|
|
49
|
+
afterPkg = normalized.substring(packagePrefix.length);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return !afterPkg.includes('/');
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// Fallback: linear scan
|
|
58
|
+
const packageSuffix = '/' + packagePath + '/';
|
|
59
|
+
const packagePrefix = packagePath + '/';
|
|
60
|
+
const matches = [];
|
|
61
|
+
for (let i = 0; i < normalizedFileList.length; i++) {
|
|
62
|
+
const normalized = normalizedFileList[i];
|
|
63
|
+
if (!extensions.some((ext) => normalized.endsWith(ext)))
|
|
64
|
+
continue;
|
|
65
|
+
// Match both nested (src/models/User.kt) and root-level (models/User.kt) packages
|
|
66
|
+
let afterPackage = null;
|
|
67
|
+
if (normalized.includes(packageSuffix)) {
|
|
68
|
+
afterPackage = normalized.substring(normalized.lastIndexOf(packageSuffix) + packageSuffix.length);
|
|
69
|
+
}
|
|
70
|
+
else if (normalized.startsWith(packagePrefix)) {
|
|
71
|
+
afterPackage = normalized.substring(packagePrefix.length);
|
|
72
|
+
}
|
|
73
|
+
if (afterPackage !== null && !afterPackage.includes('/')) {
|
|
74
|
+
matches.push(allFileList[i]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return matches;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Try to resolve a JVM member/static import by stripping the member name.
|
|
81
|
+
* Java: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
|
|
82
|
+
* Kotlin: "com.example.Constants.VALUE" -> resolve "com.example.Constants"
|
|
83
|
+
*/
|
|
84
|
+
function resolveJvmMemberImport(importPath, normalizedFileList, allFileList, extensions, index) {
|
|
85
|
+
// Member imports: com.example.Constants.VALUE or com.example.Constants.*
|
|
86
|
+
// The last segment is a member name if it starts with lowercase, is ALL_CAPS, or is a wildcard
|
|
87
|
+
const segments = importPath.split('.');
|
|
88
|
+
if (segments.length < 3)
|
|
89
|
+
return null;
|
|
90
|
+
const lastSeg = segments[segments.length - 1];
|
|
91
|
+
if (lastSeg === '*' || /^[a-z]/.test(lastSeg) || /^[A-Z_]+$/.test(lastSeg)) {
|
|
92
|
+
const classPath = segments.slice(0, -1).join('/');
|
|
93
|
+
for (const ext of extensions) {
|
|
94
|
+
const classSuffix = classPath + ext;
|
|
95
|
+
if (index) {
|
|
96
|
+
const result = index.get(classSuffix) || index.getInsensitive(classSuffix);
|
|
97
|
+
if (result)
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const fullSuffix = '/' + classSuffix;
|
|
102
|
+
for (let i = 0; i < normalizedFileList.length; i++) {
|
|
103
|
+
if (normalizedFileList[i].endsWith(fullSuffix) ||
|
|
104
|
+
normalizedFileList[i].toLowerCase().endsWith(fullSuffix.toLowerCase())) {
|
|
105
|
+
return allFileList[i];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PHP PSR-4 import resolution — internal helpers.
|
|
4
|
+
*
|
|
5
|
+
* Strategy lives in configs/php.ts.
|
|
6
|
+
* This file contains the shared helper for PSR-4 resolution via composer.json.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolvePhpImportInternal = resolvePhpImportInternal;
|
|
10
|
+
const utils_js_1 = require("./utils.js");
|
|
11
|
+
/** Get or compute the sorted PSR-4 entries (cached after first call). */
|
|
12
|
+
function getSortedPsr4(config) {
|
|
13
|
+
if (!config.psr4Sorted) {
|
|
14
|
+
const sorted = [...config.psr4.entries()].sort((a, b) => b[0].length - a[0].length);
|
|
15
|
+
config.psr4Sorted = sorted;
|
|
16
|
+
}
|
|
17
|
+
return config.psr4Sorted;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a PHP use-statement import path using PSR-4 mappings (low-level helper).
|
|
21
|
+
* e.g. "App\Http\Controllers\UserController" -> "app/Http/Controllers/UserController.php"
|
|
22
|
+
*
|
|
23
|
+
* For function/constant imports (use function App\Models\getUser), the last
|
|
24
|
+
* segment is the symbol name, not a class name, so it may not map directly to
|
|
25
|
+
* a file. When PSR-4 class-style resolution fails, we fall back to scanning
|
|
26
|
+
* .php files in the namespace directory.
|
|
27
|
+
*
|
|
28
|
+
* NOTE: The function-import fallback returns the first matching .php file in the
|
|
29
|
+
* namespace directory. When multiple files exist in the same namespace directory,
|
|
30
|
+
* resolution is non-deterministic (depends on Set/index iteration order). This is
|
|
31
|
+
* a known limitation — PHP function imports cannot be resolved to a specific file
|
|
32
|
+
* without parsing all candidate files.
|
|
33
|
+
*/
|
|
34
|
+
function resolvePhpImportInternal(importPath, composerConfig, allFiles, normalizedFileList, allFileList, index) {
|
|
35
|
+
// Normalize: replace backslashes with forward slashes
|
|
36
|
+
const normalized = importPath.replace(/\\/g, '/');
|
|
37
|
+
// Reject path traversal attempts (defense-in-depth — walker whitelist also prevents this)
|
|
38
|
+
if (normalized.includes('..'))
|
|
39
|
+
return null;
|
|
40
|
+
if (composerConfig) {
|
|
41
|
+
const sorted = getSortedPsr4(composerConfig);
|
|
42
|
+
for (const [nsPrefix, dirPrefix] of sorted) {
|
|
43
|
+
const nsPrefixSlash = nsPrefix.replace(/\\/g, '/');
|
|
44
|
+
if (normalized.startsWith(nsPrefixSlash + '/') || normalized === nsPrefixSlash) {
|
|
45
|
+
const remainder = normalized.slice(nsPrefixSlash.length).replace(/^\//, '');
|
|
46
|
+
// 1. Try class-style PSR-4: full path → file (e.g. App\Models\User → app/Models/User.php)
|
|
47
|
+
const filePath = dirPrefix + (remainder ? '/' + remainder : '') + '.php';
|
|
48
|
+
if (allFiles.has(filePath))
|
|
49
|
+
return filePath;
|
|
50
|
+
if (index) {
|
|
51
|
+
const result = index.getInsensitive(filePath);
|
|
52
|
+
if (result)
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
// 2. Function/constant fallback: strip last segment (symbol name), scan namespace directory.
|
|
56
|
+
// e.g. App\Models\getUser → directory app/Models/, find first .php file in that dir.
|
|
57
|
+
const lastSlash = remainder.lastIndexOf('/');
|
|
58
|
+
const nsDir = lastSlash >= 0 ? dirPrefix + '/' + remainder.slice(0, lastSlash) : dirPrefix;
|
|
59
|
+
// Prefer SuffixIndex directory lookup (O(log n + matches)) over linear scan
|
|
60
|
+
if (index) {
|
|
61
|
+
const candidates = index.getFilesInDir(nsDir, '.php');
|
|
62
|
+
if (candidates.length > 0)
|
|
63
|
+
return candidates[0];
|
|
64
|
+
}
|
|
65
|
+
// Fallback: linear scan (only when SuffixIndex unavailable)
|
|
66
|
+
const nsDirPrefix = nsDir.endsWith('/') ? nsDir : nsDir + '/';
|
|
67
|
+
for (const f of allFiles) {
|
|
68
|
+
if (f.startsWith(nsDirPrefix) &&
|
|
69
|
+
f.endsWith('.php') &&
|
|
70
|
+
!f.slice(nsDirPrefix.length).includes('/')) {
|
|
71
|
+
return f;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Fallback: suffix matching (works without composer.json)
|
|
78
|
+
const pathParts = normalized.split('/').filter(Boolean);
|
|
79
|
+
return (0, utils_js_1.suffixResolve)(pathParts, normalizedFileList, allFileList, index);
|
|
80
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Python import resolution — PEP 328 relative imports and proximity-based bare imports.
|
|
4
|
+
* Import system spec: PEP 302 (original), PEP 451 (current).
|
|
5
|
+
*
|
|
6
|
+
* Strategy lives in configs/python.ts.
|
|
7
|
+
* This file contains the shared internal helper used by the strategy and tests.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.resolvePythonImportInternal = resolvePythonImportInternal;
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a Python import to a file path (low-level helper).
|
|
14
|
+
*
|
|
15
|
+
* 1. Relative (PEP 328): `.module`, `..module` — 1 dot = current package, each extra dot goes up one level.
|
|
16
|
+
* 2. Proximity bare import: static heuristic — checks the importer's own directory first.
|
|
17
|
+
* Approximates the common case where co-located files find each other without an installed package.
|
|
18
|
+
* Single-segment only — multi-segment (e.g. `os.path`) falls through to suffixResolve.
|
|
19
|
+
* Checks package (__init__.py) before module (.py), matching CPython's finder order (PEP 451 §4).
|
|
20
|
+
* Coexistence of both is physically impossible (same name = file vs directory), so the order
|
|
21
|
+
* only matters for spec compliance.
|
|
22
|
+
* Note: implicit namespace packages (Python 3.3+, directory without __init__.py) are not handled.
|
|
23
|
+
*
|
|
24
|
+
* Returns null to let the caller fall through to suffixResolve.
|
|
25
|
+
*/
|
|
26
|
+
function resolvePythonImportInternal(currentFile, importPath, allFiles) {
|
|
27
|
+
// Relative import — PEP 328 (https://peps.python.org/pep-0328/)
|
|
28
|
+
if (importPath.startsWith('.')) {
|
|
29
|
+
const dotMatch = importPath.match(/^(\.+)(.*)/);
|
|
30
|
+
if (!dotMatch)
|
|
31
|
+
return null;
|
|
32
|
+
const dotCount = dotMatch[1].length;
|
|
33
|
+
const modulePart = dotMatch[2];
|
|
34
|
+
const dirParts = currentFile.split('/').slice(0, -1);
|
|
35
|
+
// PEP 328: more dots than directory levels → beyond top-level package → invalid
|
|
36
|
+
if (dotCount - 1 > dirParts.length)
|
|
37
|
+
return null;
|
|
38
|
+
for (let i = 1; i < dotCount; i++)
|
|
39
|
+
dirParts.pop();
|
|
40
|
+
if (modulePart) {
|
|
41
|
+
dirParts.push(...modulePart.replace(/\./g, '/').split('/'));
|
|
42
|
+
}
|
|
43
|
+
return (0, utils_js_1.tryResolveWithExtensions)(dirParts.join('/'), allFiles);
|
|
44
|
+
}
|
|
45
|
+
// Proximity bare import — single-segment only; package before module (PEP 451 §4)
|
|
46
|
+
const pathLike = importPath.replace(/\./g, '/');
|
|
47
|
+
if (pathLike.includes('/'))
|
|
48
|
+
return null;
|
|
49
|
+
// Normalize for Windows backslashes
|
|
50
|
+
const importerDir = currentFile.replace(/\\/g, '/').split('/').slice(0, -1).join('/');
|
|
51
|
+
// Proximity check — only applies when the importer lives in a subdirectory.
|
|
52
|
+
// Root-level importers (importerDir === '') skip straight to the ancestor
|
|
53
|
+
// walk below, which handles the root case correctly (prefix becomes '').
|
|
54
|
+
if (importerDir) {
|
|
55
|
+
if (allFiles.has(`${importerDir}/${pathLike}/__init__.py`))
|
|
56
|
+
return `${importerDir}/${pathLike}/__init__.py`;
|
|
57
|
+
if (allFiles.has(`${importerDir}/${pathLike}.py`))
|
|
58
|
+
return `${importerDir}/${pathLike}.py`;
|
|
59
|
+
}
|
|
60
|
+
// Ancestor directory walk — Python resolves bare imports against sys.path entries,
|
|
61
|
+
// which typically includes the project root and package directories. Walk up from the
|
|
62
|
+
// importer's directory to find the module in an ancestor, preferring the closest match.
|
|
63
|
+
// This prevents cross-language misresolution (e.g., Python `from middleware import X`
|
|
64
|
+
// resolving to a TypeScript middleware.ts via suffix matching). Issue #417.
|
|
65
|
+
const dirParts = importerDir.split('/');
|
|
66
|
+
for (let i = dirParts.length - 1; i >= 0; i--) {
|
|
67
|
+
const ancestorDir = dirParts.slice(0, i).join('/');
|
|
68
|
+
const prefix = ancestorDir ? `${ancestorDir}/` : '';
|
|
69
|
+
if (allFiles.has(`${prefix}${pathLike}/__init__.py`))
|
|
70
|
+
return `${prefix}${pathLike}/__init__.py`;
|
|
71
|
+
if (allFiles.has(`${prefix}${pathLike}.py`))
|
|
72
|
+
return `${prefix}${pathLike}.py`;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Import resolver factory — creates a composable import resolver from
|
|
4
|
+
* an ordered list of strategies.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the method-extractors/generic.ts and call-extractors/generic.ts
|
|
7
|
+
* pattern: declare a config per language, produce a runtime resolver via factory.
|
|
8
|
+
*
|
|
9
|
+
* Each strategy is tried in order. The first non-null result wins.
|
|
10
|
+
* A result with an empty `files` array is treated as "handled but unresolved"
|
|
11
|
+
* (stops the chain without producing import edges).
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.createImportResolver = createImportResolver;
|
|
15
|
+
/**
|
|
16
|
+
* Create an ImportResolverFn from a declarative config.
|
|
17
|
+
*
|
|
18
|
+
* Chains strategies in declaration order — first non-null result wins.
|
|
19
|
+
* Returns null only if every strategy returns null.
|
|
20
|
+
*
|
|
21
|
+
* Error behaviour: if a strategy throws, the error propagates immediately
|
|
22
|
+
* and remaining strategies are not tried. Strategies are expected to be
|
|
23
|
+
* pure data transforms that never throw; any unexpected exception indicates
|
|
24
|
+
* a bug in the strategy implementation.
|
|
25
|
+
*/
|
|
26
|
+
function createImportResolver(config) {
|
|
27
|
+
const { strategies } = config;
|
|
28
|
+
return (rawImportPath, filePath, ctx) => {
|
|
29
|
+
for (const strategy of strategies) {
|
|
30
|
+
const result = strategy(rawImportPath, filePath, ctx);
|
|
31
|
+
if (result)
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ruby require/require_relative import resolution — internal helpers.
|
|
4
|
+
*
|
|
5
|
+
* Strategy lives in configs/ruby.ts.
|
|
6
|
+
* This file only contains the low-level helper used by the strategy.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolveRubyImportInternal = resolveRubyImportInternal;
|
|
10
|
+
const utils_js_1 = require("./utils.js");
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a Ruby require/require_relative path to a matching .rb file (low-level helper).
|
|
13
|
+
*
|
|
14
|
+
* require_relative paths are pre-normalized to './' prefix by the caller.
|
|
15
|
+
* require paths use suffix matching (gem-style paths like 'json', 'net/http').
|
|
16
|
+
*/
|
|
17
|
+
function resolveRubyImportInternal(importPath, normalizedFileList, allFileList, index) {
|
|
18
|
+
const pathParts = importPath.replace(/^\.\//, '').split('/').filter(Boolean);
|
|
19
|
+
return (0, utils_js_1.suffixResolve)(pathParts, normalizedFileList, allFileList, index);
|
|
20
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rust module import resolution — internal helpers.
|
|
4
|
+
*
|
|
5
|
+
* Strategy lives in configs/rust.ts.
|
|
6
|
+
* This file contains shared helpers used by the strategy and standard.ts.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolveRustImportInternal = resolveRustImportInternal;
|
|
10
|
+
exports.tryRustModulePath = tryRustModulePath;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve Rust use-path to a file (low-level helper).
|
|
13
|
+
* Handles crate::, super::, self:: prefixes and :: path separators.
|
|
14
|
+
*/
|
|
15
|
+
function resolveRustImportInternal(currentFile, importPath, allFiles) {
|
|
16
|
+
let rustPath;
|
|
17
|
+
if (importPath.startsWith('crate::')) {
|
|
18
|
+
// crate:: resolves from src/ directory (standard Rust layout)
|
|
19
|
+
rustPath = importPath.slice(7).replace(/::/g, '/');
|
|
20
|
+
// Try from src/ (standard layout)
|
|
21
|
+
const fromSrc = tryRustModulePath('src/' + rustPath, allFiles);
|
|
22
|
+
if (fromSrc)
|
|
23
|
+
return fromSrc;
|
|
24
|
+
// Try from repo root (non-standard)
|
|
25
|
+
const fromRoot = tryRustModulePath(rustPath, allFiles);
|
|
26
|
+
if (fromRoot)
|
|
27
|
+
return fromRoot;
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
if (importPath.startsWith('super::')) {
|
|
31
|
+
// super:: = parent directory of current file's module
|
|
32
|
+
const currentDir = currentFile.split('/').slice(0, -1);
|
|
33
|
+
currentDir.pop(); // Go up one level for super::
|
|
34
|
+
rustPath = importPath.slice(7).replace(/::/g, '/');
|
|
35
|
+
const fullPath = [...currentDir, rustPath].join('/');
|
|
36
|
+
return tryRustModulePath(fullPath, allFiles);
|
|
37
|
+
}
|
|
38
|
+
if (importPath.startsWith('self::')) {
|
|
39
|
+
// self:: = current module's directory
|
|
40
|
+
const currentDir = currentFile.split('/').slice(0, -1);
|
|
41
|
+
rustPath = importPath.slice(6).replace(/::/g, '/');
|
|
42
|
+
const fullPath = [...currentDir, rustPath].join('/');
|
|
43
|
+
return tryRustModulePath(fullPath, allFiles);
|
|
44
|
+
}
|
|
45
|
+
// Bare path without prefix (e.g., from a use in a nested module)
|
|
46
|
+
// Convert :: to / and try suffix matching
|
|
47
|
+
if (importPath.includes('::')) {
|
|
48
|
+
rustPath = importPath.replace(/::/g, '/');
|
|
49
|
+
return tryRustModulePath(rustPath, allFiles);
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Try to resolve a Rust module path to a file.
|
|
55
|
+
* Tries: path.rs, path/mod.rs, and with the last segment stripped
|
|
56
|
+
* (last segment might be a symbol name, not a module).
|
|
57
|
+
*/
|
|
58
|
+
function tryRustModulePath(modulePath, allFiles) {
|
|
59
|
+
// Try direct: path.rs
|
|
60
|
+
if (allFiles.has(modulePath + '.rs'))
|
|
61
|
+
return modulePath + '.rs';
|
|
62
|
+
// Try directory: path/mod.rs
|
|
63
|
+
if (allFiles.has(modulePath + '/mod.rs'))
|
|
64
|
+
return modulePath + '/mod.rs';
|
|
65
|
+
// Try path/lib.rs (for crate root)
|
|
66
|
+
if (allFiles.has(modulePath + '/lib.rs'))
|
|
67
|
+
return modulePath + '/lib.rs';
|
|
68
|
+
// The last segment might be a symbol (function, struct, etc.), not a module.
|
|
69
|
+
// Strip it and try again.
|
|
70
|
+
const lastSlash = modulePath.lastIndexOf('/');
|
|
71
|
+
if (lastSlash > 0) {
|
|
72
|
+
const parentPath = modulePath.substring(0, lastSlash);
|
|
73
|
+
if (allFiles.has(parentPath + '.rs'))
|
|
74
|
+
return parentPath + '.rs';
|
|
75
|
+
if (allFiles.has(parentPath + '/mod.rs'))
|
|
76
|
+
return parentPath + '/mod.rs';
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Standard import path resolution.
|
|
4
|
+
* Handles relative imports, path alias rewriting, and generic suffix matching.
|
|
5
|
+
* Used as the fallback when language-specific resolvers don't match.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveImportPath = exports.RESOLVE_CACHE_CAP = void 0;
|
|
9
|
+
exports.resolveStandard = resolveStandard;
|
|
10
|
+
exports.createStandardStrategy = createStandardStrategy;
|
|
11
|
+
exports.stripJsExtension = stripJsExtension;
|
|
12
|
+
const utils_js_1 = require("./utils.js");
|
|
13
|
+
const rust_js_1 = require("./rust.js");
|
|
14
|
+
const index_js_1 = require("../../../../shared/index.js");
|
|
15
|
+
/** Max entries in the resolve cache. Beyond this, entries are evicted.
|
|
16
|
+
* 100K entries ≈ 15MB — covers the most common import patterns. */
|
|
17
|
+
exports.RESOLVE_CACHE_CAP = 100_000;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve an import path to a file path in the repository.
|
|
20
|
+
*
|
|
21
|
+
* Language-specific preprocessing is applied before the generic resolution:
|
|
22
|
+
* - TypeScript/JavaScript: rewrites tsconfig path aliases
|
|
23
|
+
* - Rust: converts crate::/super::/self:: to relative paths
|
|
24
|
+
*
|
|
25
|
+
* Java wildcards and Go package imports are handled by the scope-resolution
|
|
26
|
+
* phase because they resolve to multiple files.
|
|
27
|
+
*/
|
|
28
|
+
const resolveImportPath = (currentFile, importPath, allFiles, allFileList, normalizedFileList, resolveCache, language, tsconfigPaths, index) => {
|
|
29
|
+
const cacheKey = `${currentFile}::${importPath}`;
|
|
30
|
+
if (resolveCache.has(cacheKey))
|
|
31
|
+
return resolveCache.get(cacheKey) ?? null;
|
|
32
|
+
const cache = (result) => {
|
|
33
|
+
// Evict oldest 20% when cap is reached instead of clearing all
|
|
34
|
+
if (resolveCache.size >= exports.RESOLVE_CACHE_CAP) {
|
|
35
|
+
const evictCount = Math.floor(exports.RESOLVE_CACHE_CAP * 0.2);
|
|
36
|
+
const iter = resolveCache.keys();
|
|
37
|
+
for (let i = 0; i < evictCount; i++) {
|
|
38
|
+
const key = iter.next().value;
|
|
39
|
+
if (key !== undefined)
|
|
40
|
+
resolveCache.delete(key);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
resolveCache.set(cacheKey, result);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
// ---- TypeScript/JavaScript: rewrite path aliases ----
|
|
47
|
+
if ((language === index_js_1.SupportedLanguages.TypeScript || language === index_js_1.SupportedLanguages.JavaScript) &&
|
|
48
|
+
tsconfigPaths &&
|
|
49
|
+
!importPath.startsWith('.')) {
|
|
50
|
+
for (const [aliasPrefix, targetPrefix] of tsconfigPaths.aliases) {
|
|
51
|
+
if (importPath.startsWith(aliasPrefix)) {
|
|
52
|
+
const remainder = importPath.slice(aliasPrefix.length);
|
|
53
|
+
// Build the rewritten path relative to baseUrl
|
|
54
|
+
const rewritten = tsconfigPaths.baseUrl === '.'
|
|
55
|
+
? targetPrefix + remainder
|
|
56
|
+
: tsconfigPaths.baseUrl + '/' + targetPrefix + remainder;
|
|
57
|
+
// Try direct resolution from repo root
|
|
58
|
+
const resolved = (0, utils_js_1.tryResolveWithExtensions)(rewritten, allFiles);
|
|
59
|
+
if (resolved)
|
|
60
|
+
return cache(resolved);
|
|
61
|
+
// ESM fallback: strip .js/.jsx/.mjs/.cjs and retry with TS equivalents
|
|
62
|
+
const strippedAlias = stripJsExtension(rewritten);
|
|
63
|
+
if (strippedAlias !== null) {
|
|
64
|
+
const esmResolved = (0, utils_js_1.tryResolveWithExtensions)(strippedAlias, allFiles);
|
|
65
|
+
if (esmResolved)
|
|
66
|
+
return cache(esmResolved);
|
|
67
|
+
}
|
|
68
|
+
// Try suffix matching as fallback
|
|
69
|
+
const parts = rewritten.split('/').filter(Boolean);
|
|
70
|
+
const suffixResult = (0, utils_js_1.suffixResolve)(parts, normalizedFileList, allFileList, index);
|
|
71
|
+
if (suffixResult)
|
|
72
|
+
return cache(suffixResult);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// ---- Rust: convert module path syntax to file paths ----
|
|
77
|
+
if (language === index_js_1.SupportedLanguages.Rust) {
|
|
78
|
+
// Handle grouped imports: use crate::module::{Foo, Bar, Baz}
|
|
79
|
+
// Extract the prefix path before ::{...} and resolve the module, not the symbols
|
|
80
|
+
let rustImportPath = importPath;
|
|
81
|
+
const braceIdx = importPath.indexOf('::{');
|
|
82
|
+
if (braceIdx !== -1) {
|
|
83
|
+
rustImportPath = importPath.substring(0, braceIdx);
|
|
84
|
+
}
|
|
85
|
+
else if (importPath.startsWith('{') && importPath.endsWith('}')) {
|
|
86
|
+
// Top-level grouped imports: use {crate::a, crate::b}
|
|
87
|
+
// Iterate each part and return the first that resolves. This function returns a single
|
|
88
|
+
// string, so callers that need ALL edges must intercept before reaching here (the
|
|
89
|
+
// scope-resolution phase handles Rust grouped-import blocks). This fallback
|
|
90
|
+
// handles any path that reaches resolveImportPath directly.
|
|
91
|
+
const inner = importPath.slice(1, -1);
|
|
92
|
+
const parts = inner
|
|
93
|
+
.split(',')
|
|
94
|
+
.map((p) => p.trim())
|
|
95
|
+
.filter(Boolean);
|
|
96
|
+
for (const part of parts) {
|
|
97
|
+
const partResult = (0, rust_js_1.resolveRustImportInternal)(currentFile, part, allFiles);
|
|
98
|
+
if (partResult)
|
|
99
|
+
return cache(partResult);
|
|
100
|
+
}
|
|
101
|
+
return cache(null);
|
|
102
|
+
}
|
|
103
|
+
const rustResult = (0, rust_js_1.resolveRustImportInternal)(currentFile, rustImportPath, allFiles);
|
|
104
|
+
if (rustResult)
|
|
105
|
+
return cache(rustResult);
|
|
106
|
+
// Fall through to generic resolution if Rust-specific didn't match
|
|
107
|
+
}
|
|
108
|
+
// ---- Generic relative import resolution (./ and ../) ----
|
|
109
|
+
const currentDir = currentFile.split('/').slice(0, -1);
|
|
110
|
+
const parts = importPath.split('/');
|
|
111
|
+
for (const part of parts) {
|
|
112
|
+
if (part === '.')
|
|
113
|
+
continue;
|
|
114
|
+
if (part === '..') {
|
|
115
|
+
currentDir.pop();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
currentDir.push(part);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const basePath = currentDir.join('/');
|
|
122
|
+
if (importPath.startsWith('.')) {
|
|
123
|
+
const resolved = (0, utils_js_1.tryResolveWithExtensions)(basePath, allFiles);
|
|
124
|
+
if (resolved)
|
|
125
|
+
return cache(resolved);
|
|
126
|
+
// TypeScript ESM: imports use .js/.jsx/.mjs/.cjs but source files are
|
|
127
|
+
// .ts/.tsx/.mts/.cts. Strip the JS-family extension and re-resolve.
|
|
128
|
+
if (language === index_js_1.SupportedLanguages.TypeScript || language === index_js_1.SupportedLanguages.JavaScript) {
|
|
129
|
+
const stripped = stripJsExtension(basePath);
|
|
130
|
+
if (stripped !== null) {
|
|
131
|
+
return cache((0, utils_js_1.tryResolveWithExtensions)(stripped, allFiles));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return cache(null);
|
|
135
|
+
}
|
|
136
|
+
// ---- Generic package/absolute import resolution (suffix matching) ----
|
|
137
|
+
// Java wildcards are handled by the scope-resolution phase, not here; this
|
|
138
|
+
// resolver returns null for `.*` so it never produces a single-file match.
|
|
139
|
+
if (importPath.endsWith('.*')) {
|
|
140
|
+
return cache(null);
|
|
141
|
+
}
|
|
142
|
+
// C/C++ includes use actual file paths (e.g. "animal.h") — don't convert dots to slashes
|
|
143
|
+
const isCpp = language === index_js_1.SupportedLanguages.C || language === index_js_1.SupportedLanguages.CPlusPlus;
|
|
144
|
+
const pathLike = importPath.includes('/') || isCpp ? importPath : importPath.replace(/\./g, '/');
|
|
145
|
+
const pathParts = pathLike.split('/').filter(Boolean);
|
|
146
|
+
const resolved = (0, utils_js_1.suffixResolve)(pathParts, normalizedFileList, allFileList, index);
|
|
147
|
+
return cache(resolved);
|
|
148
|
+
};
|
|
149
|
+
exports.resolveImportPath = resolveImportPath;
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// Per-language dispatch functions (moved from import-resolution.ts)
|
|
152
|
+
// ============================================================================
|
|
153
|
+
/**
|
|
154
|
+
* Standard single-file resolution (TS/JS/C/C++ and fallback for other languages).
|
|
155
|
+
* Handles relative imports, tsconfig path aliases, and suffix matching.
|
|
156
|
+
*/
|
|
157
|
+
function resolveStandard(rawImportPath, filePath, ctx, language) {
|
|
158
|
+
const resolvedPath = (0, exports.resolveImportPath)(filePath, rawImportPath, ctx.allFilePaths, ctx.allFileList, ctx.normalizedFileList, ctx.resolveCache, language, ctx.configs.tsconfigPaths, ctx.index);
|
|
159
|
+
return resolvedPath ? { kind: 'files', files: [resolvedPath] } : null;
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Strategy factory — composable hook for ImportResolutionConfig
|
|
163
|
+
// ============================================================================
|
|
164
|
+
/** Create a reusable standard-resolution strategy for a given language. */
|
|
165
|
+
function createStandardStrategy(language) {
|
|
166
|
+
return (raw, fp, ctx) => resolveStandard(raw, fp, ctx, language);
|
|
167
|
+
}
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// ESM extension helpers
|
|
170
|
+
// ============================================================================
|
|
171
|
+
/** JS-family extensions that TypeScript ESM maps to TS equivalents. */
|
|
172
|
+
const JS_EXTENSION_PATTERN = /\.(js|jsx|mjs|cjs)$/;
|
|
173
|
+
/**
|
|
174
|
+
* Strip a JS-family extension from a path, returning the stem.
|
|
175
|
+
* Returns `null` if the path does not end with a JS-family extension.
|
|
176
|
+
*/
|
|
177
|
+
function stripJsExtension(path) {
|
|
178
|
+
const match = JS_EXTENSION_PATTERN.exec(path);
|
|
179
|
+
return match ? path.slice(0, -match[0].length) : null;
|
|
180
|
+
}
|