@lzehrung/codegraph 2.3.31 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -141
- package/codegraph-skill/codegraph/SKILL.md +8 -6
- package/dist/agent/artifact.d.ts +2 -0
- package/dist/agent/artifact.d.ts.map +1 -1
- package/dist/agent/artifact.js.map +1 -1
- package/dist/agent/call-hierarchy.js +2 -4
- package/dist/agent/call-hierarchy.js.map +1 -1
- package/dist/agent/explore.d.ts +1 -1
- package/dist/agent/explore.d.ts.map +1 -1
- package/dist/agent/explore.js +3 -2
- package/dist/agent/explore.js.map +1 -1
- package/dist/agent/refactor-plan.js +2 -4
- package/dist/agent/refactor-plan.js.map +1 -1
- package/dist/agent/rename-preview.d.ts.map +1 -1
- package/dist/agent/rename-preview.js +4 -3
- package/dist/agent/rename-preview.js.map +1 -1
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +5 -3
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/semantic-symbols.d.ts.map +1 -1
- package/dist/agent/semantic-symbols.js +2 -3
- package/dist/agent/semantic-symbols.js.map +1 -1
- package/dist/agent/session.d.ts +3 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +10 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/type-hierarchy.js +2 -4
- package/dist/agent/type-hierarchy.js.map +1 -1
- package/dist/agent/workspace-symbols.d.ts.map +1 -1
- package/dist/agent/workspace-symbols.js +2 -3
- package/dist/agent/workspace-symbols.js.map +1 -1
- package/dist/agent-tools.d.ts +0 -4
- package/dist/agent-tools.d.ts.map +1 -1
- package/dist/agent-tools.js +3 -6
- package/dist/agent-tools.js.map +1 -1
- package/dist/analysis-summary.d.ts +8 -4
- package/dist/analysis-summary.d.ts.map +1 -1
- package/dist/analysis-summary.js +15 -66
- package/dist/analysis-summary.js.map +1 -1
- package/dist/bin/cli.js +51145 -41770
- package/dist/bin/query-index-worker.js +122 -82
- package/dist/cli/affected.d.ts.map +1 -1
- package/dist/cli/affected.js +4 -1
- package/dist/cli/affected.js.map +1 -1
- package/dist/cli/command-catalog.js +1 -1
- package/dist/cli/command-catalog.js.map +1 -1
- package/dist/cli/command-table.d.ts.map +1 -1
- package/dist/cli/command-table.js +9 -17
- package/dist/cli/command-table.js.map +1 -1
- package/dist/cli/context.js +10 -10
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/drift.d.ts +0 -2
- package/dist/cli/drift.d.ts.map +1 -1
- package/dist/cli/drift.js +0 -1
- package/dist/cli/drift.js.map +1 -1
- package/dist/cli/graph-delta.d.ts +0 -2
- package/dist/cli/graph-delta.d.ts.map +1 -1
- package/dist/cli/graph-delta.js +0 -4
- package/dist/cli/graph-delta.js.map +1 -1
- package/dist/cli/graph-queries.d.ts.map +1 -1
- package/dist/cli/graph-queries.js +27 -1
- package/dist/cli/graph-queries.js.map +1 -1
- package/dist/cli/graph.d.ts +0 -3
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +4 -14
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/help.d.ts +34 -34
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +9 -14
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/impact.d.ts +0 -2
- package/dist/cli/impact.d.ts.map +1 -1
- package/dist/cli/impact.js +0 -1
- package/dist/cli/impact.js.map +1 -1
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/inspect.d.ts +0 -2
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +5 -8
- package/dist/cli/inspect.js.map +1 -1
- package/dist/cli/invocation-context.d.ts +0 -3
- package/dist/cli/invocation-context.d.ts.map +1 -1
- package/dist/cli/invocation-context.js +4 -16
- package/dist/cli/invocation-context.js.map +1 -1
- package/dist/cli/navigation.d.ts +0 -2
- package/dist/cli/navigation.d.ts.map +1 -1
- package/dist/cli/navigation.js +0 -1
- package/dist/cli/navigation.js.map +1 -1
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +4 -14
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/review.d.ts +0 -2
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +0 -5
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/root-policy.d.ts +0 -2
- package/dist/cli/root-policy.d.ts.map +1 -1
- package/dist/cli/root-policy.js +0 -8
- package/dist/cli/root-policy.js.map +1 -1
- package/dist/cli/server.d.ts.map +1 -1
- package/dist/cli/server.js +0 -2
- package/dist/cli/server.js.map +1 -1
- package/dist/drift/artifact.d.ts.map +1 -1
- package/dist/drift/artifact.js +15 -18
- package/dist/drift/artifact.js.map +1 -1
- package/dist/drift/compare.js +1 -1
- package/dist/drift/compare.js.map +1 -1
- package/dist/drift/git.d.ts.map +1 -1
- package/dist/drift/git.js +0 -1
- package/dist/drift/git.js.map +1 -1
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +5 -7
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/drift/types.d.ts +2 -2
- package/dist/drift/types.d.ts.map +1 -1
- package/dist/drift/types.js.map +1 -1
- package/dist/duplicates/unit-cache.d.ts +0 -1
- package/dist/duplicates/unit-cache.d.ts.map +1 -1
- package/dist/duplicates/unit-cache.js +3 -11
- package/dist/duplicates/unit-cache.js.map +1 -1
- package/dist/duplicates/units.d.ts +5 -5
- package/dist/duplicates/units.d.ts.map +1 -1
- package/dist/duplicates/units.js +25 -88
- package/dist/duplicates/units.js.map +1 -1
- package/dist/graph-builder.d.ts +0 -6
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +6 -11
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +4 -6
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +31 -26
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/angularjs.d.ts.map +1 -1
- package/dist/graphs/angularjs.js +2 -1
- package/dist/graphs/angularjs.js.map +1 -1
- package/dist/graphs/edge-resolution.d.ts +4 -1
- package/dist/graphs/edge-resolution.d.ts.map +1 -1
- package/dist/graphs/edge-resolution.js +24 -76
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/specifiers.d.ts +4 -13
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +80 -173
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
- package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
- package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +60 -8
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
- package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/import-aliases.js +150 -7
- package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
- package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
- package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +141 -25
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed.js +449 -46
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/graphs/symbol-graph.d.ts +2 -0
- package/dist/graphs/symbol-graph.d.ts.map +1 -1
- package/dist/graphs/symbol-graph.js +34 -16
- package/dist/graphs/symbol-graph.js.map +1 -1
- package/dist/graphs/types.d.ts +0 -4
- package/dist/graphs/types.d.ts.map +1 -1
- package/dist/graphs.d.ts +1 -1
- package/dist/graphs.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
- package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
- package/dist/impact/call-compatibility/providers/index.js +6 -6
- package/dist/impact/call-compatibility/providers/index.js.map +1 -1
- package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
- package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility/types.d.ts +6 -0
- package/dist/impact/call-compatibility/types.d.ts.map +1 -1
- package/dist/impact/call-compatibility.d.ts.map +1 -1
- package/dist/impact/call-compatibility.js +316 -526
- package/dist/impact/call-compatibility.js.map +1 -1
- package/dist/impact/map.js +1 -0
- package/dist/impact/map.js.map +1 -1
- package/dist/impact/reference-cache.d.ts.map +1 -1
- package/dist/impact/reference-cache.js +2 -2
- package/dist/impact/reference-cache.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/ambiguous-resolution.d.ts +11 -0
- package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
- package/dist/indexer/ambiguous-resolution.js +19 -0
- package/dist/indexer/ambiguous-resolution.js.map +1 -0
- package/dist/indexer/build-cache/module-cache.d.ts +39 -1
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +218 -21
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +30 -44
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +32 -71
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +164 -84
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/reports.d.ts +0 -2
- package/dist/indexer/build-cache/reports.d.ts.map +1 -1
- package/dist/indexer/build-cache/reports.js +0 -97
- package/dist/indexer/build-cache/reports.js.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
- package/dist/indexer/build-cache/resolver-environment.js +32 -2
- package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
- package/dist/indexer/build-cache.d.ts +2 -2
- package/dist/indexer/build-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache.js +2 -2
- package/dist/indexer/build-cache.js.map +1 -1
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +656 -71
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/build-workers.d.ts.map +1 -1
- package/dist/indexer/build-workers.js +9 -9
- package/dist/indexer/build-workers.js.map +1 -1
- package/dist/indexer/call-hierarchy.js +1 -1
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/callable-identity.d.ts +24 -0
- package/dist/indexer/callable-identity.d.ts.map +1 -0
- package/dist/indexer/callable-identity.js +111 -0
- package/dist/indexer/callable-identity.js.map +1 -0
- package/dist/indexer/compilation-units.d.ts +103 -0
- package/dist/indexer/compilation-units.d.ts.map +1 -0
- package/dist/indexer/compilation-units.js +607 -0
- package/dist/indexer/compilation-units.js.map +1 -0
- package/dist/indexer/cpp-callables.d.ts +25 -0
- package/dist/indexer/cpp-callables.d.ts.map +1 -0
- package/dist/indexer/cpp-callables.js +562 -0
- package/dist/indexer/cpp-callables.js.map +1 -0
- package/dist/indexer/declaration-visibility.d.ts +43 -2
- package/dist/indexer/declaration-visibility.d.ts.map +1 -1
- package/dist/indexer/declaration-visibility.js +158 -2
- package/dist/indexer/declaration-visibility.js.map +1 -1
- package/dist/indexer/expand-star-imports.d.ts +6 -1
- package/dist/indexer/expand-star-imports.d.ts.map +1 -1
- package/dist/indexer/expand-star-imports.js +131 -37
- package/dist/indexer/expand-star-imports.js.map +1 -1
- package/dist/indexer/finalize.d.ts.map +1 -1
- package/dist/indexer/finalize.js +0 -1
- package/dist/indexer/finalize.js.map +1 -1
- package/dist/indexer/import-resolution-tables.d.ts +72 -0
- package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
- package/dist/indexer/import-resolution-tables.js +137 -0
- package/dist/indexer/import-resolution-tables.js.map +1 -0
- package/dist/indexer/import-types.d.ts +54 -0
- package/dist/indexer/import-types.d.ts.map +1 -1
- package/dist/indexer/import-types.js +24 -1
- package/dist/indexer/import-types.js.map +1 -1
- package/dist/indexer/imports/context.d.ts +16 -1
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.js +149 -30
- package/dist/indexer/imports/import-binding-tables.js.map +1 -1
- package/dist/indexer/imports/js-text-imports.js +4 -4
- package/dist/indexer/imports/js-text-imports.js.map +1 -1
- package/dist/indexer/imports/native-captures.d.ts.map +1 -1
- package/dist/indexer/imports/native-captures.js +24 -6
- package/dist/indexer/imports/native-captures.js.map +1 -1
- package/dist/indexer/imports/python.d.ts +10 -2
- package/dist/indexer/imports/python.d.ts.map +1 -1
- package/dist/indexer/imports/python.js +128 -112
- package/dist/indexer/imports/python.js.map +1 -1
- package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
- package/dist/indexer/imports/text-import-extractors.js +68 -19
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts +3 -4
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +116 -72
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/incremental-plan.d.ts +33 -0
- package/dist/indexer/incremental-plan.d.ts.map +1 -1
- package/dist/indexer/incremental-plan.js +203 -1
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +3 -2
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +659 -78
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/member-selection.d.ts +46 -0
- package/dist/indexer/member-selection.d.ts.map +1 -0
- package/dist/indexer/member-selection.js +169 -0
- package/dist/indexer/member-selection.js.map +1 -0
- package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
- package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/c-family.js +137 -0
- package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
- package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js +119 -0
- package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
- package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/index.js +132 -0
- package/dist/indexer/name-lookup-policies/index.js.map +1 -0
- package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
- package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
- package/dist/indexer/name-lookup-policies/php.js +82 -0
- package/dist/indexer/name-lookup-policies/php.js.map +1 -0
- package/dist/indexer/name-resolution-types.d.ts +101 -0
- package/dist/indexer/name-resolution-types.d.ts.map +1 -0
- package/dist/indexer/name-resolution-types.js +2 -0
- package/dist/indexer/name-resolution-types.js.map +1 -0
- package/dist/indexer/name-resolution.d.ts +57 -0
- package/dist/indexer/name-resolution.d.ts.map +1 -0
- package/dist/indexer/name-resolution.js +204 -0
- package/dist/indexer/name-resolution.js.map +1 -0
- package/dist/indexer/navigation-cpp.d.ts +58 -0
- package/dist/indexer/navigation-cpp.d.ts.map +1 -0
- package/dist/indexer/navigation-cpp.js +935 -0
- package/dist/indexer/navigation-cpp.js.map +1 -0
- package/dist/indexer/navigation-goto.d.ts +115 -3
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +2469 -190
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +21 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +520 -63
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-php.d.ts +66 -0
- package/dist/indexer/navigation-php.d.ts.map +1 -1
- package/dist/indexer/navigation-php.js +287 -4
- package/dist/indexer/navigation-php.js.map +1 -1
- package/dist/indexer/navigation-provenance.d.ts +1 -1
- package/dist/indexer/navigation-provenance.d.ts.map +1 -1
- package/dist/indexer/navigation-provenance.js +4 -13
- package/dist/indexer/navigation-provenance.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +73 -6
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +661 -67
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +46 -2
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +599 -193
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +29 -2
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +1092 -153
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/parse-context.d.ts +2 -3
- package/dist/indexer/parse-context.d.ts.map +1 -1
- package/dist/indexer/parse-context.js +8 -21
- package/dist/indexer/parse-context.js.map +1 -1
- package/dist/indexer/php-namespace-symbols.d.ts +66 -0
- package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
- package/dist/indexer/php-namespace-symbols.js +342 -0
- package/dist/indexer/php-namespace-symbols.js.map +1 -0
- package/dist/indexer/reference-candidates.d.ts.map +1 -1
- package/dist/indexer/reference-candidates.js +13 -7
- package/dist/indexer/reference-candidates.js.map +1 -1
- package/dist/indexer/reference-context.d.ts +2 -0
- package/dist/indexer/reference-context.d.ts.map +1 -1
- package/dist/indexer/reference-context.js +4 -0
- package/dist/indexer/reference-context.js.map +1 -1
- package/dist/indexer/scope-nodes.d.ts +92 -13
- package/dist/indexer/scope-nodes.d.ts.map +1 -1
- package/dist/indexer/scope-nodes.js +212 -20
- package/dist/indexer/scope-nodes.js.map +1 -1
- package/dist/indexer/scope-types.d.ts +29 -1
- package/dist/indexer/scope-types.d.ts.map +1 -1
- package/dist/indexer/scope.d.ts +2 -3
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +968 -47
- package/dist/indexer/scope.js.map +1 -1
- package/dist/indexer/shared-owner-identity.d.ts +53 -0
- package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
- package/dist/indexer/shared-owner-identity.js +460 -0
- package/dist/indexer/shared-owner-identity.js.map +1 -0
- package/dist/indexer/shared.d.ts +1 -1
- package/dist/indexer/shared.d.ts.map +1 -1
- package/dist/indexer/shared.js +1 -1
- package/dist/indexer/shared.js.map +1 -1
- package/dist/indexer/star-import-precedence.d.ts +113 -0
- package/dist/indexer/star-import-precedence.d.ts.map +1 -0
- package/dist/indexer/star-import-precedence.js +402 -0
- package/dist/indexer/star-import-precedence.js.map +1 -0
- package/dist/indexer/symbols.d.ts +3 -1
- package/dist/indexer/symbols.d.ts.map +1 -1
- package/dist/indexer/symbols.js +58 -18
- package/dist/indexer/symbols.js.map +1 -1
- package/dist/indexer/ts-callables.d.ts +42 -0
- package/dist/indexer/ts-callables.d.ts.map +1 -0
- package/dist/indexer/ts-callables.js +233 -0
- package/dist/indexer/ts-callables.js.map +1 -0
- package/dist/indexer/types.d.ts +41 -26
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/indexer/unused-exports.d.ts +13 -0
- package/dist/indexer/unused-exports.d.ts.map +1 -0
- package/dist/indexer/unused-exports.js +159 -0
- package/dist/indexer/unused-exports.js.map +1 -0
- package/dist/indexer/workspace-symbols.d.ts.map +1 -1
- package/dist/indexer/workspace-symbols.js +3 -2
- package/dist/indexer/workspace-symbols.js.map +1 -1
- package/dist/indexer.d.ts +3 -8
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/languages/callable-arity.d.ts +223 -0
- package/dist/languages/callable-arity.d.ts.map +1 -0
- package/dist/languages/callable-arity.js +1199 -0
- package/dist/languages/callable-arity.js.map +1 -0
- package/dist/languages/definitions/c-family.d.ts.map +1 -1
- package/dist/languages/definitions/c-family.js +30 -1
- package/dist/languages/definitions/c-family.js.map +1 -1
- package/dist/languages/definitions/c.d.ts +4 -0
- package/dist/languages/definitions/c.d.ts.map +1 -1
- package/dist/languages/definitions/c.js +19 -0
- package/dist/languages/definitions/c.js.map +1 -1
- package/dist/languages/definitions/cpp.d.ts.map +1 -1
- package/dist/languages/definitions/cpp.js +12 -0
- package/dist/languages/definitions/cpp.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +2 -8
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/go.d.ts.map +1 -1
- package/dist/languages/definitions/go.js +3 -0
- package/dist/languages/definitions/go.js.map +1 -1
- package/dist/languages/definitions/javascript.d.ts.map +1 -1
- package/dist/languages/definitions/javascript.js +10 -1
- package/dist/languages/definitions/javascript.js.map +1 -1
- package/dist/languages/definitions/js-family.d.ts +1 -1
- package/dist/languages/definitions/js-family.d.ts.map +1 -1
- package/dist/languages/definitions/js-family.js +7 -1
- package/dist/languages/definitions/js-family.js.map +1 -1
- package/dist/languages/definitions/php.d.ts.map +1 -1
- package/dist/languages/definitions/php.js +5 -1
- package/dist/languages/definitions/php.js.map +1 -1
- package/dist/languages/definitions/typescript.d.ts.map +1 -1
- package/dist/languages/definitions/typescript.js +8 -1
- package/dist/languages/definitions/typescript.js.map +1 -1
- package/dist/languages/definitions/zig.d.ts.map +1 -1
- package/dist/languages/definitions/zig.js +8 -0
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/lifecycle/manifest.d.ts.map +1 -1
- package/dist/lifecycle/manifest.js +0 -1
- package/dist/lifecycle/manifest.js.map +1 -1
- package/dist/mcp/handlers.js +14 -7
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/native/byte-index.d.ts +6 -0
- package/dist/native/byte-index.d.ts.map +1 -1
- package/dist/native/byte-index.js +11 -6
- package/dist/native/byte-index.js.map +1 -1
- package/dist/native/contracts.d.ts +2 -3
- package/dist/native/contracts.d.ts.map +1 -1
- package/dist/native/execution.d.ts +9 -9
- package/dist/native/execution.d.ts.map +1 -1
- package/dist/native/execution.js +37 -77
- package/dist/native/execution.js.map +1 -1
- package/dist/native/js-bridge.d.ts +2 -15
- package/dist/native/js-bridge.d.ts.map +1 -1
- package/dist/native/js-bridge.js +2 -15
- package/dist/native/js-bridge.js.map +1 -1
- package/dist/native/query-results.js +2 -2
- package/dist/native/query-results.js.map +1 -1
- package/dist/native/runtime.d.ts +12 -12
- package/dist/native/runtime.d.ts.map +1 -1
- package/dist/native/runtime.js +24 -69
- package/dist/native/runtime.js.map +1 -1
- package/dist/native/tree-sitter-native.d.ts +3 -3
- package/dist/native/tree-sitter-native.d.ts.map +1 -1
- package/dist/native/tree-sitter-native.js +2 -2
- package/dist/native/tree-sitter-native.js.map +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +0 -4
- package/dist/presets.js.map +1 -1
- package/dist/review/candidates.d.ts.map +1 -1
- package/dist/review/candidates.js +1 -1
- package/dist/review/candidates.js.map +1 -1
- package/dist/review/deleted.d.ts +3 -3
- package/dist/review/deleted.d.ts.map +1 -1
- package/dist/review/deleted.js +82 -32
- package/dist/review/deleted.js.map +1 -1
- package/dist/review/report.d.ts +1 -0
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +1 -1
- package/dist/review/report.js.map +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +3 -20
- package/dist/review.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +0 -5
- package/dist/session.js.map +1 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +2 -1
- package/dist/sql/navigation.js.map +1 -1
- package/dist/sql/source-graph.d.ts.map +1 -1
- package/dist/sql/source-graph.js +2 -2
- package/dist/sql/source-graph.js.map +1 -1
- package/dist/sqlite/schema.d.ts +1 -1
- package/dist/sqlite/schema.d.ts.map +1 -1
- package/dist/sqlite/schema.js +8 -2
- package/dist/sqlite/schema.js.map +1 -1
- package/dist/sqlite/write.js +2 -2
- package/dist/sqlite/write.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/util/bloom-filter.d.ts +8 -1
- package/dist/util/bloom-filter.d.ts.map +1 -1
- package/dist/util/bloom-filter.js +15 -2
- package/dist/util/bloom-filter.js.map +1 -1
- package/dist/util/glob.d.ts +32 -0
- package/dist/util/glob.d.ts.map +1 -0
- package/dist/util/glob.js +137 -0
- package/dist/util/glob.js.map +1 -0
- package/dist/util/graph-edges.d.ts +19 -1
- package/dist/util/graph-edges.d.ts.map +1 -1
- package/dist/util/graph-edges.js +30 -4
- package/dist/util/graph-edges.js.map +1 -1
- package/dist/util/identifiers.d.ts +15 -0
- package/dist/util/identifiers.d.ts.map +1 -1
- package/dist/util/identifiers.js +35 -0
- package/dist/util/identifiers.js.map +1 -1
- package/dist/util/member-access-tables.d.ts +61 -4
- package/dist/util/member-access-tables.d.ts.map +1 -1
- package/dist/util/member-access-tables.js +139 -19
- package/dist/util/member-access-tables.js.map +1 -1
- package/dist/util/member-access.d.ts +17 -0
- package/dist/util/member-access.d.ts.map +1 -1
- package/dist/util/member-access.js +98 -3
- package/dist/util/member-access.js.map +1 -1
- package/dist/util/project-files.d.ts +2 -10
- package/dist/util/project-files.d.ts.map +1 -1
- package/dist/util/project-files.js +29 -51
- package/dist/util/project-files.js.map +1 -1
- package/dist/util/python-type-checking.d.ts +18 -0
- package/dist/util/python-type-checking.d.ts.map +1 -0
- package/dist/util/python-type-checking.js +160 -0
- package/dist/util/python-type-checking.js.map +1 -0
- package/dist/util/resolution/cargo-targets.d.ts +11 -0
- package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
- package/dist/util/resolution/cargo-targets.js +174 -13
- package/dist/util/resolution/cargo-targets.js.map +1 -1
- package/dist/util/resolution/csharp.d.ts +33 -1
- package/dist/util/resolution/csharp.d.ts.map +1 -1
- package/dist/util/resolution/csharp.js +145 -30
- package/dist/util/resolution/csharp.js.map +1 -1
- package/dist/util/resolution/jvm.d.ts +7 -3
- package/dist/util/resolution/jvm.d.ts.map +1 -1
- package/dist/util/resolution/jvm.js +56 -38
- package/dist/util/resolution/jvm.js.map +1 -1
- package/dist/util/resolution/php.d.ts.map +1 -1
- package/dist/util/resolution/php.js +35 -8
- package/dist/util/resolution/php.js.map +1 -1
- package/dist/util/resolution/python.d.ts +9 -0
- package/dist/util/resolution/python.d.ts.map +1 -1
- package/dist/util/resolution/python.js +46 -0
- package/dist/util/resolution/python.js.map +1 -1
- package/dist/util/resolution/rust.d.ts +0 -1
- package/dist/util/resolution/rust.d.ts.map +1 -1
- package/dist/util/resolution/rust.js +95 -35
- package/dist/util/resolution/rust.js.map +1 -1
- package/dist/util/resolution/specifier-targets.d.ts +44 -0
- package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
- package/dist/util/resolution/specifier-targets.js +152 -0
- package/dist/util/resolution/specifier-targets.js.map +1 -0
- package/dist/util/resolution-candidates.d.ts +5 -0
- package/dist/util/resolution-candidates.d.ts.map +1 -1
- package/dist/util/resolution-candidates.js +16 -3
- package/dist/util/resolution-candidates.js.map +1 -1
- package/dist/util/resolution.d.ts +2 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +101 -15
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/specifiers.d.ts +29 -1
- package/dist/util/specifiers.d.ts.map +1 -1
- package/dist/util/specifiers.js +56 -8
- package/dist/util/specifiers.js.map +1 -1
- package/dist/util/trivia.d.ts.map +1 -1
- package/dist/util/trivia.js +49 -30
- package/dist/util/trivia.js.map +1 -1
- package/dist/util/workspace.d.ts.map +1 -1
- package/dist/util/workspace.js +32 -4
- package/dist/util/workspace.js.map +1 -1
- package/docs/mcp.md +3 -2
- package/package.json +5 -7
- package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
- package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
- package/dist/impact/call-compatibility/providers/profiles.js +0 -164
- package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { supportForFileWithoutHeaderSample } from "../../languages.js";
|
|
2
|
+
import { confineResolvedPath, fileIdentityKey, readUtf8WithoutBom } from "../paths.js";
|
|
3
|
+
import { CSHARP_IDENTIFIER_SOURCE, normalizeCsharpIdentifier, normalizeCsharpQualifiedName } from "../identifiers.js";
|
|
3
4
|
import { getImportableLanguageGlobs } from "../resolution-candidates.js";
|
|
4
5
|
import { maskTrivia } from "../trivia.js";
|
|
6
|
+
import { selectUniqueCsharpNamespaceTypeFile } from "../../indexer/shared-owner-identity.js";
|
|
5
7
|
import { CSHARP_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
|
|
6
8
|
import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./project-symbols.js";
|
|
7
9
|
// A namespace name may be qualified (`namespace A.B { }`) and either block-scoped (closing
|
|
@@ -9,6 +11,10 @@ import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./p
|
|
|
9
11
|
// may declare several namespaces, and a block-scoped namespace may nest inside another, so
|
|
10
12
|
// every declaration is indexed under its composed name.
|
|
11
13
|
const CSHARP_NAMESPACE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])namespace\s+(${CSHARP_IDENTIFIER_SOURCE}(?:\s*\.\s*${CSHARP_IDENTIFIER_SOURCE})*)\s*[;{]`, "gu");
|
|
14
|
+
// Namespace-direct types only. A nested `class Point` inside another type is not `N.Point`.
|
|
15
|
+
// `delegate` is omitted: its return type sits where a type name would, so a naive match
|
|
16
|
+
// would index `void` from `delegate void Point()`.
|
|
17
|
+
const CSHARP_TYPE_DECLARATION_PATTERN = new RegExp(String.raw `(?<![\w@.])(?:class|struct|interface|enum|record)\s+(?:(?:class|struct)\s+)?(${CSHARP_IDENTIFIER_SOURCE})`, "gu");
|
|
12
18
|
const csharpNamespaceFileCache = new Map();
|
|
13
19
|
const csharpProjectNamespaceIndexCache = new Map();
|
|
14
20
|
/**
|
|
@@ -21,20 +27,30 @@ function maskCsharpTrivia(source) {
|
|
|
21
27
|
return maskTrivia(source, "csharp");
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
24
|
-
*
|
|
25
|
-
* `namespace Outer { namespace Inner {
|
|
26
|
-
*
|
|
27
|
-
*
|
|
30
|
+
* Namespaces a file declares, plus the types declared directly in each one.
|
|
31
|
+
* `@P` and `P` are one namespace, and `namespace Outer { namespace Inner {} }` is
|
|
32
|
+
* `Outer.Inner`, matching compilation-unit identity. Brace depth is tracked on the
|
|
33
|
+
* masked source, so braces inside comments and strings cannot compose a name, and a
|
|
34
|
+
* type nested inside another type is not recorded under the enclosing namespace.
|
|
28
35
|
*/
|
|
29
|
-
function
|
|
36
|
+
function collectCsharpNamespaceIndex(source) {
|
|
30
37
|
const masked = maskCsharpTrivia(source);
|
|
31
|
-
const
|
|
38
|
+
const namespaces = new Set();
|
|
39
|
+
const symbolsByNamespace = new Map();
|
|
32
40
|
const scopes = [];
|
|
41
|
+
let fileScoped = null;
|
|
33
42
|
let depth = 0;
|
|
34
43
|
let cursor = 0;
|
|
44
|
+
const events = [];
|
|
35
45
|
for (const match of masked.matchAll(CSHARP_NAMESPACE_DECLARATION_PATTERN)) {
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
events.push({ index: match.index ?? 0, kind: "namespace", match });
|
|
47
|
+
}
|
|
48
|
+
for (const match of masked.matchAll(CSHARP_TYPE_DECLARATION_PATTERN)) {
|
|
49
|
+
events.push({ index: match.index ?? 0, kind: "type", match });
|
|
50
|
+
}
|
|
51
|
+
events.sort((left, right) => left.index - right.index || (left.kind === "namespace" ? -1 : 1));
|
|
52
|
+
const advance = (to) => {
|
|
53
|
+
for (; cursor < to; cursor += 1) {
|
|
38
54
|
const ch = masked[cursor];
|
|
39
55
|
if (ch === "{") {
|
|
40
56
|
depth += 1;
|
|
@@ -45,38 +61,67 @@ function collectCsharpNamespaceNames(source) {
|
|
|
45
61
|
scopes.pop();
|
|
46
62
|
}
|
|
47
63
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
};
|
|
65
|
+
for (const event of events) {
|
|
66
|
+
advance(event.index);
|
|
67
|
+
if (event.kind === "namespace") {
|
|
68
|
+
const namespaceName = event.match[1];
|
|
69
|
+
if (!namespaceName)
|
|
70
|
+
continue;
|
|
71
|
+
const normalized = normalizeCsharpQualifiedName(namespaceName);
|
|
72
|
+
if (!normalized)
|
|
73
|
+
continue;
|
|
74
|
+
const matchEnd = event.index + event.match[0].length;
|
|
75
|
+
const terminator = masked[matchEnd - 1];
|
|
76
|
+
cursor = matchEnd;
|
|
77
|
+
if (terminator !== "{") {
|
|
78
|
+
// A file-scoped namespace is always top level and does not open a scope.
|
|
79
|
+
fileScoped = normalized;
|
|
80
|
+
namespaces.add(normalized);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const enclosing = scopes.length ? scopes[scopes.length - 1].name : null;
|
|
84
|
+
const qualified = enclosing ? `${enclosing}.${normalized}` : normalized;
|
|
85
|
+
namespaces.add(qualified);
|
|
86
|
+
scopes.push({ openedDepth: depth, name: qualified });
|
|
87
|
+
depth += 1;
|
|
57
88
|
continue;
|
|
58
89
|
}
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
90
|
+
const rawName = event.match[1];
|
|
91
|
+
if (!rawName)
|
|
92
|
+
continue;
|
|
93
|
+
const typeName = normalizeCsharpIdentifier(rawName);
|
|
94
|
+
if (!typeName)
|
|
95
|
+
continue;
|
|
96
|
+
const currentNamespace = scopes.length ? scopes[scopes.length - 1].name : fileScoped;
|
|
97
|
+
if (!currentNamespace)
|
|
98
|
+
continue;
|
|
99
|
+
const contentDepth = scopes.length ? scopes[scopes.length - 1].openedDepth + 1 : 0;
|
|
100
|
+
if (depth !== contentDepth)
|
|
101
|
+
continue;
|
|
102
|
+
const symbols = symbolsByNamespace.get(currentNamespace) ?? new Set();
|
|
103
|
+
symbols.add(typeName);
|
|
104
|
+
symbolsByNamespace.set(currentNamespace, symbols);
|
|
64
105
|
}
|
|
65
|
-
return Array.from(
|
|
106
|
+
return { namespaces: Array.from(namespaces), symbolsByNamespace };
|
|
66
107
|
}
|
|
67
108
|
async function readCsharpNamespaceIndex(filePath) {
|
|
68
109
|
const cached = csharpNamespaceFileCache.get(filePath);
|
|
69
110
|
if (cached)
|
|
70
111
|
return cached;
|
|
71
112
|
const source = await readUtf8WithoutBom(filePath);
|
|
72
|
-
const
|
|
113
|
+
const collected = collectCsharpNamespaceIndex(source);
|
|
114
|
+
const entry = { namespaces: collected.namespaces, symbolsByNamespace: collected.symbolsByNamespace };
|
|
73
115
|
csharpNamespaceFileCache.set(filePath, entry);
|
|
74
116
|
return entry;
|
|
75
117
|
}
|
|
76
118
|
async function getCsharpProjectNamespaceIndex(indexRoot) {
|
|
77
119
|
return await getOrCreateProjectSymbolIndex(csharpProjectNamespaceIndexCache, indexRoot, async () => buildDeclaredContainerIndex(indexRoot, getImportableLanguageGlobs("csharp"), async (filePath) => {
|
|
78
120
|
const entry = await readCsharpNamespaceIndex(filePath);
|
|
79
|
-
return entry.namespaces.map((name) =>
|
|
121
|
+
return entry.namespaces.map((name) => {
|
|
122
|
+
const symbols = entry.symbolsByNamespace.get(name);
|
|
123
|
+
return symbols ? { name, symbols } : { name };
|
|
124
|
+
});
|
|
80
125
|
}));
|
|
81
126
|
}
|
|
82
127
|
/**
|
|
@@ -84,18 +129,88 @@ async function getCsharpProjectNamespaceIndex(indexRoot) {
|
|
|
84
129
|
* exists) that declares `spec` as a namespace, via either a block-scoped or a
|
|
85
130
|
* file-scoped namespace declaration. Sorted by the shared project symbol index.
|
|
86
131
|
*/
|
|
87
|
-
export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile) {
|
|
132
|
+
export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile, languageExtensions) {
|
|
88
133
|
const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
|
|
89
134
|
const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot);
|
|
90
|
-
const
|
|
135
|
+
const normalized = normalizeCsharpQualifiedName(spec);
|
|
136
|
+
const lookup = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
|
|
137
|
+
if (!lookup)
|
|
138
|
+
return [];
|
|
139
|
+
const packageCandidates = projectIndex.filesByPackage.get(lookup) ?? [];
|
|
91
140
|
const confined = [];
|
|
92
141
|
for (const candidate of packageCandidates) {
|
|
93
142
|
const hit = await confineResolvedPath(projectRoot, candidate);
|
|
94
|
-
if (hit)
|
|
143
|
+
if (hit && isActiveCsharpFile(hit, languageExtensions))
|
|
95
144
|
confined.push(hit);
|
|
96
145
|
}
|
|
97
146
|
return confined;
|
|
98
147
|
}
|
|
148
|
+
function slashPath(filePath) {
|
|
149
|
+
return filePath.replace(/\\/g, "/");
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The scanner finds candidates by C# filename globs; an active extension mapping can assign one of
|
|
153
|
+
* those suffixes to another language, and such a file is never a C# namespace or type target.
|
|
154
|
+
*/
|
|
155
|
+
function isActiveCsharpFile(file, languageExtensions) {
|
|
156
|
+
return !languageExtensions || supportForFileWithoutHeaderSample(file, languageExtensions)?.id === "csharp";
|
|
157
|
+
}
|
|
158
|
+
async function confineCsharpTypeFiles(projectRoot, files, languageExtensions) {
|
|
159
|
+
const confined = [];
|
|
160
|
+
const seen = new Set();
|
|
161
|
+
for (const candidate of files) {
|
|
162
|
+
const hit = await confineResolvedPath(projectRoot, candidate);
|
|
163
|
+
if (!hit || !isActiveCsharpFile(hit, languageExtensions))
|
|
164
|
+
continue;
|
|
165
|
+
const normalized = slashPath(hit);
|
|
166
|
+
const key = fileIdentityKey(normalized);
|
|
167
|
+
if (seen.has(key))
|
|
168
|
+
continue;
|
|
169
|
+
seen.add(key);
|
|
170
|
+
confined.push(normalized);
|
|
171
|
+
}
|
|
172
|
+
return confined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The file that declares `typeName` directly in `namespaceName`.
|
|
176
|
+
* One file binds immediately. Several files bind only when partial-type ownership
|
|
177
|
+
* collapses them to one representative; otherwise the result is `ambiguous` or
|
|
178
|
+
* `partial` and never the first path.
|
|
179
|
+
*/
|
|
180
|
+
export async function resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions) {
|
|
181
|
+
const normalizedNamespace = normalizeCsharpQualifiedName(namespaceName);
|
|
182
|
+
const namespaceLookup = normalizedNamespace.startsWith("global::")
|
|
183
|
+
? normalizedNamespace.slice("global::".length)
|
|
184
|
+
: normalizedNamespace;
|
|
185
|
+
const normalizedType = normalizeCsharpIdentifier(typeName);
|
|
186
|
+
if (!namespaceLookup || !normalizedType)
|
|
187
|
+
return { status: "not_found" };
|
|
188
|
+
const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
|
|
189
|
+
const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot);
|
|
190
|
+
const files = projectIndex.filesByPackageSymbol.get(namespaceLookup)?.get(normalizedType) ?? [];
|
|
191
|
+
const confined = await confineCsharpTypeFiles(projectRoot, files, languageExtensions);
|
|
192
|
+
if (confined.length === 0)
|
|
193
|
+
return { status: "not_found" };
|
|
194
|
+
if (confined.length === 1)
|
|
195
|
+
return { status: "found", file: confined[0] };
|
|
196
|
+
return selectUniqueCsharpNamespaceTypeFile(confined, namespaceLookup, normalizedType);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* `N.Point` (and `@N.@Point`) as a type in namespace `N`, after namespace identity
|
|
200
|
+
* normalization. A single-segment spec is not a dotted type. Navigation, references,
|
|
201
|
+
* and the symbol graph follow the import binding this resolves; the dependency graph
|
|
202
|
+
* calls this helper itself because it re-resolves the specifier text.
|
|
203
|
+
*/
|
|
204
|
+
export async function resolveCsharpDottedTypeImportPath(projectRoot, spec, fromFile, languageExtensions) {
|
|
205
|
+
const normalized = normalizeCsharpQualifiedName(spec);
|
|
206
|
+
const body = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
|
|
207
|
+
const parts = body.split(".").filter(Boolean);
|
|
208
|
+
if (parts.length < 2)
|
|
209
|
+
return { status: "not_found" };
|
|
210
|
+
const typeName = parts[parts.length - 1];
|
|
211
|
+
const namespaceName = parts.slice(0, -1).join(".");
|
|
212
|
+
return await resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions);
|
|
213
|
+
}
|
|
99
214
|
export function clearCsharpResolutionCaches() {
|
|
100
215
|
csharpNamespaceFileCache.clear();
|
|
101
216
|
csharpProjectNamespaceIndexCache.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type JvmImportResolutionOptions = {
|
|
2
|
+
languageId: "java" | "kotlin";
|
|
3
|
+
fromFile: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function resolveJvmPackageImportPaths(projectRoot: string, spec: string, fromFile: string): Promise<string[]>;
|
|
6
|
+
export declare function resolveJvmImportPath(projectRoot: string, spec: string, options: JvmImportResolutionOptions): Promise<string | null>;
|
|
4
7
|
export declare function clearJvmResolutionCaches(): void;
|
|
8
|
+
export {};
|
|
5
9
|
//# sourceMappingURL=jvm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvm.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jvm.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"AA8CA,KAAK,0BAA0B,GAAG;IAChC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAyHF,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+DxB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAO/C"}
|
|
@@ -4,9 +4,10 @@ import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./p
|
|
|
4
4
|
import { JAVA_IDENTIFIER_IGNORABLE_SOURCE, JAVA_IDENTIFIER_SOURCE, KOTLIN_IDENTIFIER_SOURCE } from "../identifiers.js";
|
|
5
5
|
import { confineResolvedPath, readUtf8WithoutBom } from "../paths.js";
|
|
6
6
|
import { getImportableLanguageGlobs } from "../resolution-candidates.js";
|
|
7
|
+
import { buildTriviaMask } from "../trivia.js";
|
|
7
8
|
import { JVM_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
|
|
8
9
|
const KOTLIN_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${KOTLIN_IDENTIFIER_SOURCE}(?:\.${KOTLIN_IDENTIFIER_SOURCE})*)`, "mu");
|
|
9
|
-
const KOTLIN_DECLARATION_PATTERN = new RegExp(String.raw `\b(
|
|
10
|
+
const KOTLIN_DECLARATION_PATTERN = new RegExp(String.raw `\b(class|object|fun|typealias|interface)\s+(${KOTLIN_IDENTIFIER_SOURCE})`, "gu");
|
|
10
11
|
const JAVA_PACKAGE_PATTERN = new RegExp(String.raw `^\s*package\s+(${JAVA_IDENTIFIER_SOURCE}(?:\.${JAVA_IDENTIFIER_SOURCE})*)\s*;`, "mu");
|
|
11
12
|
const JAVA_DECLARATION_PATTERN = new RegExp(String.raw `(?:\b(?:class|interface|enum|record)|@interface)\s+(${JAVA_IDENTIFIER_SOURCE})`, "gu");
|
|
12
13
|
const JAVA_IDENTIFIER_IGNORABLE_PATTERN = new RegExp(`[${JAVA_IDENTIFIER_IGNORABLE_SOURCE}]`, "gu");
|
|
@@ -22,28 +23,50 @@ async function readJvmSymbolIndex(filePath, cache, options) {
|
|
|
22
23
|
return cached;
|
|
23
24
|
const source = await readUtf8WithoutBom(filePath);
|
|
24
25
|
const packageName = source.match(options.packagePattern)?.[1] ?? null;
|
|
26
|
+
const javaImportableTypes = options.javaImportableTypes ? new Set() : undefined;
|
|
25
27
|
const symbols = new Set();
|
|
28
|
+
const trivia = buildTriviaMask(source, options.languageId);
|
|
29
|
+
let depth = 0;
|
|
30
|
+
let cursor = 0;
|
|
26
31
|
for (const match of source.matchAll(options.declarationPattern)) {
|
|
27
|
-
const
|
|
32
|
+
const matchIndex = match.index ?? 0;
|
|
33
|
+
for (; cursor < matchIndex; cursor += 1) {
|
|
34
|
+
if (trivia[cursor])
|
|
35
|
+
continue;
|
|
36
|
+
if (source[cursor] === "{")
|
|
37
|
+
depth += 1;
|
|
38
|
+
else if (depth && source[cursor] === "}")
|
|
39
|
+
depth -= 1;
|
|
40
|
+
}
|
|
41
|
+
if (depth || trivia[matchIndex])
|
|
42
|
+
continue;
|
|
43
|
+
const symbolName = match[options.declarationNameGroup ?? 1];
|
|
28
44
|
if (symbolName) {
|
|
45
|
+
if (javaImportableTypes && (match[1] === "class" || match[1] === "object" || match[1] === "interface")) {
|
|
46
|
+
javaImportableTypes.add(symbolName);
|
|
47
|
+
}
|
|
29
48
|
symbols.add(symbolName);
|
|
30
49
|
const normalizedSymbol = options.normalizeSymbol?.(symbolName);
|
|
31
50
|
if (normalizedSymbol)
|
|
32
51
|
symbols.add(normalizedSymbol);
|
|
33
52
|
}
|
|
34
53
|
}
|
|
35
|
-
const entry = { packageName, symbols };
|
|
54
|
+
const entry = { packageName, symbols, ...(javaImportableTypes ? { javaImportableTypes } : {}) };
|
|
36
55
|
cache.set(filePath, entry);
|
|
37
56
|
return entry;
|
|
38
57
|
}
|
|
39
58
|
async function readKotlinSymbolIndex(filePath) {
|
|
40
59
|
return await readJvmSymbolIndex(filePath, kotlinSymbolIndexCache, {
|
|
60
|
+
languageId: "kotlin",
|
|
41
61
|
packagePattern: KOTLIN_PACKAGE_PATTERN,
|
|
42
62
|
declarationPattern: KOTLIN_DECLARATION_PATTERN,
|
|
63
|
+
declarationNameGroup: 2,
|
|
64
|
+
javaImportableTypes: true,
|
|
43
65
|
});
|
|
44
66
|
}
|
|
45
67
|
async function readJavaSymbolIndex(filePath) {
|
|
46
68
|
return await readJvmSymbolIndex(filePath, javaSymbolIndexCache, {
|
|
69
|
+
languageId: "java",
|
|
47
70
|
packagePattern: JAVA_PACKAGE_PATTERN,
|
|
48
71
|
declarationPattern: JAVA_DECLARATION_PATTERN,
|
|
49
72
|
normalizeSymbol: (symbol) => symbol.replace(JAVA_IDENTIFIER_IGNORABLE_PATTERN, ""),
|
|
@@ -86,10 +109,16 @@ async function confineJvmResolvedPath(projectRoot, resolved) {
|
|
|
86
109
|
async function jvmIndexRoot(projectRoot, fromFile) {
|
|
87
110
|
return await resolveNearestManifestRoot(projectRoot, fromFile, JVM_PACKAGE_MANIFEST_NAMES);
|
|
88
111
|
}
|
|
89
|
-
export async function resolveJvmPackageImportPaths(projectRoot, spec,
|
|
112
|
+
export async function resolveJvmPackageImportPaths(projectRoot, spec, fromFile) {
|
|
90
113
|
const indexRoot = await jvmIndexRoot(projectRoot, fromFile);
|
|
91
|
-
const
|
|
92
|
-
|
|
114
|
+
const [javaIndex, kotlinIndex] = await Promise.all([
|
|
115
|
+
getJavaProjectSymbolIndex(indexRoot),
|
|
116
|
+
getKotlinProjectSymbolIndex(indexRoot),
|
|
117
|
+
]);
|
|
118
|
+
const packageFiles = new Set(javaIndex.filesByPackage.get(spec) ?? []);
|
|
119
|
+
for (const file of kotlinIndex.filesByPackage.get(spec) ?? [])
|
|
120
|
+
packageFiles.add(file);
|
|
121
|
+
const packageCandidates = [...packageFiles].sort((left, right) => left.localeCompare(right));
|
|
93
122
|
const confined = [];
|
|
94
123
|
for (const candidate of packageCandidates) {
|
|
95
124
|
const hit = await confineJvmResolvedPath(projectRoot, candidate);
|
|
@@ -98,7 +127,7 @@ export async function resolveJvmPackageImportPaths(projectRoot, spec, languageId
|
|
|
98
127
|
}
|
|
99
128
|
return confined;
|
|
100
129
|
}
|
|
101
|
-
async function resolveJvmImportPath(projectRoot, spec, options) {
|
|
130
|
+
export async function resolveJvmImportPath(projectRoot, spec, options) {
|
|
102
131
|
const cache = options.languageId === "kotlin" ? kotlinImportResolutionCache : javaImportResolutionCache;
|
|
103
132
|
const indexRoot = await jvmIndexRoot(projectRoot, options.fromFile);
|
|
104
133
|
const cacheKey = `${path.resolve(projectRoot)}::${indexRoot}::${spec}`;
|
|
@@ -108,7 +137,8 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
|
|
|
108
137
|
const parts = spec.split(".").filter(Boolean);
|
|
109
138
|
const projectIndex = await getJvmProjectSymbolIndex(indexRoot, options.languageId);
|
|
110
139
|
if (parts.length < 2) {
|
|
111
|
-
|
|
140
|
+
// Kotlin can import a top-level declaration of the default package; Java cannot.
|
|
141
|
+
if (options.languageId !== "kotlin") {
|
|
112
142
|
cache.set(cacheKey, null);
|
|
113
143
|
return null;
|
|
114
144
|
}
|
|
@@ -117,14 +147,6 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
|
|
|
117
147
|
cache.set(cacheKey, resolved);
|
|
118
148
|
return resolved;
|
|
119
149
|
}
|
|
120
|
-
if (options.matchExactPackage) {
|
|
121
|
-
const exactPackageFiles = projectIndex.filesByPackage.get(spec) ?? [];
|
|
122
|
-
if (exactPackageFiles[0]) {
|
|
123
|
-
const resolved = await confineJvmResolvedPath(projectRoot, path.resolve(exactPackageFiles[0]));
|
|
124
|
-
cache.set(cacheKey, resolved);
|
|
125
|
-
return resolved;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
150
|
const importedName = parts[parts.length - 1];
|
|
129
151
|
const packageName = parts.slice(0, -1).join(".");
|
|
130
152
|
const packageCandidates = projectIndex.filesByPackage.get(packageName) ?? [];
|
|
@@ -133,33 +155,29 @@ async function resolveJvmImportPath(projectRoot, spec, options) {
|
|
|
133
155
|
cache.set(cacheKey, resolved);
|
|
134
156
|
return resolved;
|
|
135
157
|
}
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
158
|
+
const otherIndex = await getJvmProjectSymbolIndex(indexRoot, options.languageId === "java" ? "kotlin" : "java");
|
|
159
|
+
const ownFiles = projectIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
|
|
160
|
+
const otherFiles = otherIndex.filesByPackageSymbol.get(packageName)?.get(importedName) ?? [];
|
|
161
|
+
const sharedFiles = options.languageId === "java"
|
|
162
|
+
? await Promise.all(otherFiles.map(async (file) => (await readKotlinSymbolIndex(file)).javaImportableTypes?.has(importedName) ? file : null))
|
|
163
|
+
: otherFiles;
|
|
164
|
+
const symbolFiles = [...ownFiles, ...sharedFiles.filter((file) => file !== null)];
|
|
165
|
+
const filenameMatched = [];
|
|
166
|
+
// Java alone falls back to the file named after the imported type.
|
|
167
|
+
if (options.languageId === "java" && !symbolFiles.length) {
|
|
168
|
+
for (const candidate of packageCandidates) {
|
|
169
|
+
if (path.parse(candidate).name !== importedName)
|
|
170
|
+
continue;
|
|
171
|
+
const entry = await readJavaSymbolIndex(candidate);
|
|
172
|
+
if (!entry.symbols.size || entry.symbols.has(importedName))
|
|
173
|
+
filenameMatched.push(candidate);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
140
176
|
const candidates = symbolFiles.length ? symbolFiles : filenameMatched;
|
|
141
177
|
const resolved = candidates.length === 1 ? await confineJvmResolvedPath(projectRoot, path.resolve(candidates[0])) : null;
|
|
142
178
|
cache.set(cacheKey, resolved);
|
|
143
179
|
return resolved;
|
|
144
180
|
}
|
|
145
|
-
export async function resolveKotlinImportPath(projectRoot, spec, fromFile) {
|
|
146
|
-
return await resolveJvmImportPath(projectRoot, spec, {
|
|
147
|
-
languageId: "kotlin",
|
|
148
|
-
allowBarePackage: true,
|
|
149
|
-
matchExactPackage: false,
|
|
150
|
-
filenameFallback: false,
|
|
151
|
-
fromFile,
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
export async function resolveJavaImportPath(projectRoot, spec, fromFile) {
|
|
155
|
-
return await resolveJvmImportPath(projectRoot, spec, {
|
|
156
|
-
languageId: "java",
|
|
157
|
-
allowBarePackage: false,
|
|
158
|
-
matchExactPackage: true,
|
|
159
|
-
filenameFallback: true,
|
|
160
|
-
fromFile,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
181
|
export function clearJvmResolutionCaches() {
|
|
164
182
|
kotlinImportResolutionCache.clear();
|
|
165
183
|
kotlinSymbolIndexCache.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvm.js","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAE9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,MAAM,CAAC,GAAG,CAAA,kBAAkB,wBAAwB,QAAQ,wBAAwB,KAAK,EACzF,IAAI,CACL,CAAC;AACF,MAAM,0BAA0B,GAAG,IAAI,MAAM,CAC3C,MAAM,CAAC,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"jvm.js","sourceRoot":"","sources":["../../../src/util/resolution/jvm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/php.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/php.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAigBhE,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4ExB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C"}
|
|
@@ -5,7 +5,7 @@ export { getPhpComposerImplicitFiles } from "./php-composer.js";
|
|
|
5
5
|
import { buildDeclaredContainerIndex, getOrCreateProjectSymbolIndex, } from "./project-symbols.js";
|
|
6
6
|
import { getImportableLanguageExtensions, getImportableLanguageGlobs } from "../resolution-candidates.js";
|
|
7
7
|
import { confineResolvedPath, readUtf8WithoutBom } from "../paths.js";
|
|
8
|
-
import { PHP_IDENTIFIER_SOURCE } from "../identifiers.js";
|
|
8
|
+
import { foldPhpIdentifierCase, PHP_IDENTIFIER_SOURCE } from "../identifiers.js";
|
|
9
9
|
import { PHP_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
|
|
10
10
|
const PHP_IDENTIFIER_PATTERN = new RegExp(PHP_IDENTIFIER_SOURCE, "uy");
|
|
11
11
|
async function resolvePhpPathLikeSpecifier(projectRoot, fromFile, spec) {
|
|
@@ -36,7 +36,7 @@ async function getPhpProjectSymbolIndex(indexRoot) {
|
|
|
36
36
|
return await getOrCreateProjectSymbolIndex(phpProjectSymbolIndexCache, indexRoot, async () => buildDeclaredContainerIndex(indexRoot, getImportableLanguageGlobs("php"), async (filePath) => {
|
|
37
37
|
const entry = await readPhpSymbolIndex(filePath);
|
|
38
38
|
return entry.packageEntries.map((packageEntry) => ({
|
|
39
|
-
name: packageEntry.packageName,
|
|
39
|
+
name: foldPhpIdentifierCase(packageEntry.packageName),
|
|
40
40
|
symbols: packageEntry.symbols,
|
|
41
41
|
}));
|
|
42
42
|
}));
|
|
@@ -384,6 +384,24 @@ function tokenizePhpSource(source) {
|
|
|
384
384
|
async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allowedFiles, indexRoot) {
|
|
385
385
|
const normalizedSpec = spec.replace(/^\\+/, "");
|
|
386
386
|
const projectIndex = await getPhpProjectSymbolIndex(indexRoot ?? projectRoot);
|
|
387
|
+
const packageCandidateFiles = (packageName) => projectIndex.filesByPackage.get(foldPhpIdentifierCase(packageName)) ?? [];
|
|
388
|
+
const symbolCandidateFiles = (packageName, symbolName) => {
|
|
389
|
+
const filesBySymbol = projectIndex.filesByPackageSymbol.get(foldPhpIdentifierCase(packageName));
|
|
390
|
+
if (!filesBySymbol)
|
|
391
|
+
return [];
|
|
392
|
+
if (preferredKind === "const" || !preferredKind) {
|
|
393
|
+
return filesBySymbol.get(symbolName) ?? [];
|
|
394
|
+
}
|
|
395
|
+
const foldedName = foldPhpIdentifierCase(symbolName);
|
|
396
|
+
const candidates = new Set();
|
|
397
|
+
for (const [candidateName, files] of filesBySymbol) {
|
|
398
|
+
if (foldPhpIdentifierCase(candidateName) !== foldedName)
|
|
399
|
+
continue;
|
|
400
|
+
for (const file of files)
|
|
401
|
+
candidates.add(file);
|
|
402
|
+
}
|
|
403
|
+
return [...candidates];
|
|
404
|
+
};
|
|
387
405
|
const pickCandidate = async (candidates, symbolName) => {
|
|
388
406
|
for (const candidate of candidates) {
|
|
389
407
|
const resolvedCandidate = await confineResolvedPath(projectRoot, candidate);
|
|
@@ -396,21 +414,30 @@ async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allo
|
|
|
396
414
|
return resolvedCandidate;
|
|
397
415
|
}
|
|
398
416
|
const entry = await readPhpSymbolIndex(resolvedCandidate);
|
|
399
|
-
|
|
400
|
-
if (
|
|
417
|
+
let hasPreferredKind = entry.kindsBySymbol.get(symbolName)?.has(preferredKind) ?? false;
|
|
418
|
+
if (!hasPreferredKind && preferredKind !== "const") {
|
|
419
|
+
const foldedName = foldPhpIdentifierCase(symbolName);
|
|
420
|
+
for (const [candidateName, candidateKinds] of entry.kindsBySymbol) {
|
|
421
|
+
if (foldPhpIdentifierCase(candidateName) === foldedName && candidateKinds.has(preferredKind)) {
|
|
422
|
+
hasPreferredKind = true;
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
if (hasPreferredKind) {
|
|
401
428
|
return resolvedCandidate;
|
|
402
429
|
}
|
|
403
430
|
}
|
|
404
431
|
return null;
|
|
405
432
|
};
|
|
406
|
-
const exactNamespaceFiles =
|
|
433
|
+
const exactNamespaceFiles = packageCandidateFiles(normalizedSpec);
|
|
407
434
|
const exactNamespaceHit = await pickCandidate(exactNamespaceFiles);
|
|
408
435
|
if (exactNamespaceHit) {
|
|
409
436
|
return exactNamespaceHit;
|
|
410
437
|
}
|
|
411
438
|
const parts = normalizedSpec.split("\\").filter(Boolean);
|
|
412
439
|
if (parts.length === 1) {
|
|
413
|
-
const globalFiles =
|
|
440
|
+
const globalFiles = symbolCandidateFiles("", parts[0]);
|
|
414
441
|
return await pickCandidate(globalFiles, parts[0]);
|
|
415
442
|
}
|
|
416
443
|
if (parts.length < 2) {
|
|
@@ -418,12 +445,12 @@ async function resolvePhpSymbolImportPath(projectRoot, spec, preferredKind, allo
|
|
|
418
445
|
}
|
|
419
446
|
const importedName = parts[parts.length - 1];
|
|
420
447
|
const packageName = parts.slice(0, -1).join("\\");
|
|
421
|
-
const symbolFiles =
|
|
448
|
+
const symbolFiles = symbolCandidateFiles(packageName, importedName);
|
|
422
449
|
const symbolHit = await pickCandidate(symbolFiles, importedName);
|
|
423
450
|
if (symbolHit) {
|
|
424
451
|
return symbolHit;
|
|
425
452
|
}
|
|
426
|
-
const packageFiles =
|
|
453
|
+
const packageFiles = packageCandidateFiles(packageName);
|
|
427
454
|
return await pickCandidate(packageFiles, importedName);
|
|
428
455
|
}
|
|
429
456
|
export async function resolvePhpImportPath(projectRoot, fromFile, spec, preferredKind) {
|