@lzehrung/codegraph 3.0.1 → 3.1.1
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 +17 -17
- package/codegraph-skill/codegraph/SKILL.md +6 -2
- package/dist/agent/artifact.d.ts.map +1 -1
- package/dist/agent/artifact.js +4 -9
- package/dist/agent/artifact.js.map +1 -1
- package/dist/agent/call-hierarchy.d.ts +4 -2
- package/dist/agent/call-hierarchy.d.ts.map +1 -1
- package/dist/agent/call-hierarchy.js +20 -29
- package/dist/agent/call-hierarchy.js.map +1 -1
- package/dist/agent/explain.d.ts.map +1 -1
- package/dist/agent/explain.js +24 -18
- package/dist/agent/explain.js.map +1 -1
- package/dist/agent/explore.d.ts.map +1 -1
- package/dist/agent/explore.js +2 -11
- package/dist/agent/explore.js.map +1 -1
- package/dist/agent/file-view.d.ts.map +1 -1
- package/dist/agent/file-view.js +4 -12
- package/dist/agent/file-view.js.map +1 -1
- package/dist/agent/normalize.d.ts +0 -3
- package/dist/agent/normalize.d.ts.map +1 -1
- package/dist/agent/normalize.js +1 -7
- package/dist/agent/normalize.js.map +1 -1
- package/dist/agent/orient.d.ts.map +1 -1
- package/dist/agent/orient.js +2 -6
- package/dist/agent/orient.js.map +1 -1
- package/dist/agent/packet.d.ts.map +1 -1
- package/dist/agent/packet.js +2 -5
- package/dist/agent/packet.js.map +1 -1
- package/dist/agent/query-index/content.d.ts.map +1 -1
- package/dist/agent/query-index/content.js +2 -6
- package/dist/agent/query-index/content.js.map +1 -1
- package/dist/agent/query-index/update.d.ts.map +1 -1
- package/dist/agent/query-index/update.js +8 -45
- package/dist/agent/query-index/update.js.map +1 -1
- package/dist/agent/query-index/worker-pool.d.ts.map +1 -1
- package/dist/agent/query-index/worker-pool.js +2 -1
- package/dist/agent/query-index/worker-pool.js.map +1 -1
- package/dist/agent/refactor-plan.d.ts +2 -2
- package/dist/agent/refactor-plan.d.ts.map +1 -1
- package/dist/agent/refactor-plan.js +11 -57
- 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 +166 -23
- package/dist/agent/rename-preview.js.map +1 -1
- package/dist/agent/search.d.ts +13 -0
- package/dist/agent/search.d.ts.map +1 -1
- package/dist/agent/search.js +17 -26
- package/dist/agent/search.js.map +1 -1
- package/dist/agent/semantic-symbols.d.ts +1 -1
- package/dist/agent/semantic-symbols.d.ts.map +1 -1
- package/dist/agent/semantic-symbols.js +2 -5
- package/dist/agent/semantic-symbols.js.map +1 -1
- package/dist/agent/semantic.d.ts +5 -0
- package/dist/agent/semantic.d.ts.map +1 -1
- package/dist/agent/semantic.js +12 -1
- package/dist/agent/semantic.js.map +1 -1
- package/dist/agent/session.d.ts +9 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +59 -41
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/type-hierarchy.d.ts +4 -2
- package/dist/agent/type-hierarchy.d.ts.map +1 -1
- package/dist/agent/type-hierarchy.js +19 -31
- package/dist/agent/type-hierarchy.js.map +1 -1
- package/dist/agent/workspace-symbols.d.ts +1 -1
- package/dist/agent/workspace-symbols.d.ts.map +1 -1
- package/dist/agent/workspace-symbols.js +7 -15
- package/dist/agent/workspace-symbols.js.map +1 -1
- package/dist/analysis-summary.d.ts +1 -4
- package/dist/analysis-summary.d.ts.map +1 -1
- package/dist/analysis-summary.js +58 -19
- package/dist/analysis-summary.js.map +1 -1
- package/dist/bin/cli.js +41060 -27641
- package/dist/bin/query-index-worker.js +268 -241
- package/dist/bootstrap/tree-sitter-languages.d.ts +2 -0
- package/dist/bootstrap/tree-sitter-languages.d.ts.map +1 -1
- package/dist/bootstrap/tree-sitter-languages.js +6 -19
- package/dist/bootstrap/tree-sitter-languages.js.map +1 -1
- package/dist/chunking/chunk-matches.d.ts.map +1 -1
- package/dist/chunking/chunk-matches.js +6 -42
- package/dist/chunking/chunk-matches.js.map +1 -1
- package/dist/chunking/chunk-split.d.ts +7 -0
- package/dist/chunking/chunk-split.d.ts.map +1 -1
- package/dist/chunking/chunk-split.js +3 -3
- package/dist/chunking/chunk-split.js.map +1 -1
- package/dist/chunking/chunk-text-file.js +2 -30
- package/dist/chunking/chunk-text-file.js.map +1 -1
- package/dist/cli/affected.d.ts.map +1 -1
- package/dist/cli/affected.js +1 -9
- package/dist/cli/affected.js.map +1 -1
- package/dist/cli/call-hierarchy.js +3 -6
- package/dist/cli/call-hierarchy.js.map +1 -1
- package/dist/cli/chunk.d.ts.map +1 -1
- package/dist/cli/chunk.js +4 -11
- package/dist/cli/chunk.js.map +1 -1
- package/dist/cli/command-table.d.ts.map +1 -1
- package/dist/cli/command-table.js +7 -0
- package/dist/cli/command-table.js.map +1 -1
- package/dist/cli/context.d.ts +1 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +1 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +1 -11
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/duplicates.d.ts +5 -0
- package/dist/cli/duplicates.d.ts.map +1 -1
- package/dist/cli/duplicates.js +15 -2
- package/dist/cli/duplicates.js.map +1 -1
- package/dist/cli/graph.d.ts +4 -12
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +17 -8
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/help.d.ts +4 -4
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +17 -9
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +2 -12
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/links.d.ts.map +1 -1
- package/dist/cli/links.js +4 -10
- package/dist/cli/links.js.map +1 -1
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +5 -0
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/module-locals.d.ts +8 -0
- package/dist/cli/module-locals.d.ts.map +1 -0
- package/dist/cli/module-locals.js +9 -0
- package/dist/cli/module-locals.js.map +1 -0
- package/dist/cli/navigation.d.ts +2 -0
- package/dist/cli/navigation.d.ts.map +1 -1
- package/dist/cli/navigation.js +3 -5
- package/dist/cli/navigation.js.map +1 -1
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +6 -1
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/pretty.d.ts +1 -0
- package/dist/cli/pretty.d.ts.map +1 -1
- package/dist/cli/pretty.js +6 -8
- package/dist/cli/pretty.js.map +1 -1
- package/dist/cli/progress.d.ts.map +1 -1
- package/dist/cli/progress.js +42 -16
- package/dist/cli/progress.js.map +1 -1
- package/dist/cli/refactor-plan.js +2 -5
- package/dist/cli/refactor-plan.js.map +1 -1
- package/dist/cli/rename-preview.js +2 -5
- package/dist/cli/rename-preview.js.map +1 -1
- package/dist/cli/review.d.ts +6 -16
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +2 -0
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/server.d.ts.map +1 -1
- package/dist/cli/server.js +9 -10
- package/dist/cli/server.js.map +1 -1
- package/dist/cli/type-hierarchy.js +8 -8
- package/dist/cli/type-hierarchy.js.map +1 -1
- package/dist/cli/viewer.js +1 -1
- package/dist/cli/viewer.js.map +1 -1
- package/dist/document-links/asciidoc.d.ts.map +1 -1
- package/dist/document-links/asciidoc.js +4 -16
- package/dist/document-links/asciidoc.js.map +1 -1
- package/dist/document-links/check.d.ts.map +1 -1
- package/dist/document-links/check.js +1 -3
- package/dist/document-links/check.js.map +1 -1
- package/dist/document-links/html.d.ts.map +1 -1
- package/dist/document-links/html.js +6 -44
- package/dist/document-links/html.js.map +1 -1
- package/dist/document-links/markdown.d.ts.map +1 -1
- package/dist/document-links/markdown.js +4 -13
- package/dist/document-links/markdown.js.map +1 -1
- package/dist/document-links/rst.d.ts.map +1 -1
- package/dist/document-links/rst.js +7 -31
- package/dist/document-links/rst.js.map +1 -1
- package/dist/document-links/sfc.d.ts.map +1 -1
- package/dist/document-links/sfc.js +2 -5
- package/dist/document-links/sfc.js.map +1 -1
- package/dist/document-links/shared.d.ts +2 -0
- package/dist/document-links/shared.d.ts.map +1 -1
- package/dist/document-links/shared.js +13 -0
- package/dist/document-links/shared.js.map +1 -1
- package/dist/drift/artifact.d.ts.map +1 -1
- package/dist/drift/artifact.js +4 -27
- package/dist/drift/artifact.js.map +1 -1
- package/dist/drift/git.d.ts.map +1 -1
- package/dist/drift/git.js +10 -2
- package/dist/drift/git.js.map +1 -1
- package/dist/drift/graph-edges.d.ts +4 -0
- package/dist/drift/graph-edges.d.ts.map +1 -0
- package/dist/drift/graph-edges.js +15 -0
- package/dist/drift/graph-edges.js.map +1 -0
- package/dist/drift/snapshot.d.ts.map +1 -1
- package/dist/drift/snapshot.js +2 -17
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/duplicates/candidates.d.ts +61 -0
- package/dist/duplicates/candidates.d.ts.map +1 -0
- package/dist/duplicates/candidates.js +873 -0
- package/dist/duplicates/candidates.js.map +1 -0
- package/dist/duplicates/progress.d.ts +17 -0
- package/dist/duplicates/progress.d.ts.map +1 -0
- package/dist/duplicates/progress.js +57 -0
- package/dist/duplicates/progress.js.map +1 -0
- package/dist/duplicates/scoring.d.ts +9 -40
- package/dist/duplicates/scoring.d.ts.map +1 -1
- package/dist/duplicates/scoring.js +34 -414
- package/dist/duplicates/scoring.js.map +1 -1
- package/dist/duplicates/types.d.ts +30 -1
- package/dist/duplicates/types.d.ts.map +1 -1
- package/dist/duplicates/unit-cache.d.ts +11 -1
- package/dist/duplicates/unit-cache.d.ts.map +1 -1
- package/dist/duplicates/unit-cache.js +20 -2
- package/dist/duplicates/unit-cache.js.map +1 -1
- package/dist/duplicates/units.d.ts +4 -2
- package/dist/duplicates/units.d.ts.map +1 -1
- package/dist/duplicates/units.js +47 -25
- package/dist/duplicates/units.js.map +1 -1
- package/dist/duplicates.d.ts +1 -0
- package/dist/duplicates.d.ts.map +1 -1
- package/dist/duplicates.js +116 -62
- package/dist/duplicates.js.map +1 -1
- package/dist/graph-builder.d.ts +1 -1
- package/dist/graph-builder.d.ts.map +1 -1
- package/dist/graph-builder.js +3 -2
- package/dist/graph-builder.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +3 -1
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +38 -6
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/angularjs.d.ts.map +1 -1
- package/dist/graphs/angularjs.js +2 -9
- package/dist/graphs/angularjs.js.map +1 -1
- package/dist/graphs/edge-resolution.d.ts +4 -0
- package/dist/graphs/edge-resolution.d.ts.map +1 -1
- package/dist/graphs/edge-resolution.js +2 -0
- package/dist/graphs/edge-resolution.js.map +1 -1
- package/dist/graphs/external/manifests.d.ts.map +1 -1
- package/dist/graphs/external/manifests.js +1 -6
- package/dist/graphs/external/manifests.js.map +1 -1
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +47 -26
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +2 -0
- package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/edge-passes.js +9 -3
- package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +3 -3
- package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed/receiver-calls.js +2 -26
- 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 +38 -1
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/impact/analyzer.d.ts.map +1 -1
- package/dist/impact/analyzer.js +23 -17
- package/dist/impact/analyzer.js.map +1 -1
- package/dist/impact/budgets.d.ts.map +1 -1
- package/dist/impact/budgets.js +3 -9
- package/dist/impact/budgets.js.map +1 -1
- package/dist/impact/call-compatibility.d.ts.map +1 -1
- package/dist/impact/call-compatibility.js +3 -12
- package/dist/impact/call-compatibility.js.map +1 -1
- package/dist/impact/context.d.ts +6 -0
- package/dist/impact/context.d.ts.map +1 -1
- package/dist/impact/context.js +2 -2
- package/dist/impact/context.js.map +1 -1
- package/dist/impact/direct.d.ts.map +1 -1
- package/dist/impact/direct.js +2 -6
- package/dist/impact/direct.js.map +1 -1
- package/dist/impact/map.d.ts +3 -1
- package/dist/impact/map.d.ts.map +1 -1
- package/dist/impact/map.js +12 -5
- package/dist/impact/map.js.map +1 -1
- package/dist/impact/providers/base.js +1 -1
- package/dist/impact/providers/base.js.map +1 -1
- package/dist/impact/reference-cache.d.ts.map +1 -1
- package/dist/impact/reference-cache.js +1 -24
- package/dist/impact/reference-cache.js.map +1 -1
- package/dist/impact/report-shared.d.ts +2 -1
- package/dist/impact/report-shared.d.ts.map +1 -1
- package/dist/impact/report-shared.js +10 -0
- package/dist/impact/report-shared.js.map +1 -1
- package/dist/impact/report-suggestions.d.ts.map +1 -1
- package/dist/impact/report-suggestions.js +2 -8
- package/dist/impact/report-suggestions.js.map +1 -1
- package/dist/impact/report.d.ts.map +1 -1
- package/dist/impact/report.js +2 -8
- package/dist/impact/report.js.map +1 -1
- package/dist/impact/streaming.d.ts.map +1 -1
- package/dist/impact/streaming.js +3 -8
- package/dist/impact/streaming.js.map +1 -1
- package/dist/indexer/build-cache/manifest.d.ts.map +1 -1
- package/dist/indexer/build-cache/manifest.js +10 -108
- package/dist/indexer/build-cache/manifest.js.map +1 -1
- package/dist/indexer/build-cache/module-cache.d.ts +6 -1
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +25 -2
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts +38 -1
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +38 -1
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +48 -99
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-cache/reports.d.ts +1 -0
- package/dist/indexer/build-cache/reports.d.ts.map +1 -1
- package/dist/indexer/build-cache/reports.js +10 -0
- package/dist/indexer/build-cache/reports.js.map +1 -1
- package/dist/indexer/build-index.d.ts +2 -0
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +187 -57
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/build-workers.d.ts +7 -1
- package/dist/indexer/build-workers.d.ts.map +1 -1
- package/dist/indexer/build-workers.js +12 -0
- package/dist/indexer/build-workers.js.map +1 -1
- package/dist/indexer/call-hierarchy.d.ts.map +1 -1
- package/dist/indexer/call-hierarchy.js +5 -17
- package/dist/indexer/call-hierarchy.js.map +1 -1
- package/dist/indexer/compilation-units.d.ts +32 -20
- package/dist/indexer/compilation-units.d.ts.map +1 -1
- package/dist/indexer/compilation-units.js +139 -145
- package/dist/indexer/compilation-units.js.map +1 -1
- package/dist/indexer/cpp-callables.d.ts.map +1 -1
- package/dist/indexer/cpp-callables.js +2 -7
- package/dist/indexer/cpp-callables.js.map +1 -1
- package/dist/indexer/import-types.d.ts +5 -0
- package/dist/indexer/import-types.d.ts.map +1 -1
- package/dist/indexer/import-types.js.map +1 -1
- package/dist/indexer/imports/binding-ranges.d.ts +5 -12
- package/dist/indexer/imports/binding-ranges.d.ts.map +1 -1
- package/dist/indexer/imports/binding-ranges.js +13 -19
- package/dist/indexer/imports/binding-ranges.js.map +1 -1
- package/dist/indexer/imports/context.d.ts +6 -0
- package/dist/indexer/imports/context.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.d.ts +28 -13
- package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
- package/dist/indexer/imports/import-binding-tables.js +179 -178
- package/dist/indexer/imports/import-binding-tables.js.map +1 -1
- package/dist/indexer/imports/js-text-imports.d.ts +0 -1
- package/dist/indexer/imports/js-text-imports.d.ts.map +1 -1
- package/dist/indexer/imports/js-text-imports.js +0 -176
- package/dist/indexer/imports/js-text-imports.js.map +1 -1
- package/dist/indexer/imports/language-specific.d.ts.map +1 -1
- package/dist/indexer/imports/language-specific.js +4 -8
- package/dist/indexer/imports/language-specific.js.map +1 -1
- package/dist/indexer/imports/python.d.ts +0 -1
- package/dist/indexer/imports/python.d.ts.map +1 -1
- package/dist/indexer/imports/python.js +1 -29
- package/dist/indexer/imports/python.js.map +1 -1
- package/dist/indexer/imports/text-import-extractors.d.ts +2 -9
- package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
- package/dist/indexer/imports/text-import-extractors.js +0 -284
- package/dist/indexer/imports/text-import-extractors.js.map +1 -1
- package/dist/indexer/imports.d.ts +15 -0
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +82 -44
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/incremental-plan.d.ts +0 -1
- package/dist/indexer/incremental-plan.d.ts.map +1 -1
- package/dist/indexer/incremental-plan.js +6 -12
- package/dist/indexer/incremental-plan.js.map +1 -1
- package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -1
- package/dist/indexer/name-lookup-policies/implicit-self.js +25 -4
- package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -1
- package/dist/indexer/name-resolution-types.d.ts +5 -0
- package/dist/indexer/name-resolution-types.d.ts.map +1 -1
- package/dist/indexer/name-resolution.d.ts.map +1 -1
- package/dist/indexer/name-resolution.js +2 -0
- package/dist/indexer/name-resolution.js.map +1 -1
- package/dist/indexer/navigation-cpp.d.ts.map +1 -1
- package/dist/indexer/navigation-cpp.js +3 -5
- package/dist/indexer/navigation-cpp.js.map +1 -1
- package/dist/indexer/navigation-goto.d.ts +49 -3
- package/dist/indexer/navigation-goto.d.ts.map +1 -1
- package/dist/indexer/navigation-goto.js +500 -106
- package/dist/indexer/navigation-goto.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +7 -0
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +22 -2
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-php.d.ts +0 -1
- package/dist/indexer/navigation-php.d.ts.map +1 -1
- package/dist/indexer/navigation-php.js +1 -7
- package/dist/indexer/navigation-php.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +1 -0
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +134 -23
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation-resolve.d.ts +22 -0
- package/dist/indexer/navigation-resolve.d.ts.map +1 -1
- package/dist/indexer/navigation-resolve.js +73 -8
- package/dist/indexer/navigation-resolve.js.map +1 -1
- package/dist/indexer/navigation.d.ts +4 -1
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +398 -95
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/python-property-decorator.d.ts +11 -0
- package/dist/indexer/python-property-decorator.d.ts.map +1 -0
- package/dist/indexer/python-property-decorator.js +30 -0
- package/dist/indexer/python-property-decorator.js.map +1 -0
- package/dist/indexer/shared-owner-identity.d.ts +3 -1
- package/dist/indexer/shared-owner-identity.d.ts.map +1 -1
- package/dist/indexer/shared-owner-identity.js +40 -12
- package/dist/indexer/shared-owner-identity.js.map +1 -1
- package/dist/indexer/shared.d.ts +10 -0
- package/dist/indexer/shared.d.ts.map +1 -1
- package/dist/indexer/shared.js +8 -0
- package/dist/indexer/shared.js.map +1 -1
- package/dist/indexer/star-import-precedence.d.ts +5 -1
- package/dist/indexer/star-import-precedence.d.ts.map +1 -1
- package/dist/indexer/star-import-precedence.js +12 -19
- package/dist/indexer/star-import-precedence.js.map +1 -1
- package/dist/indexer/type-hierarchy.d.ts.map +1 -1
- package/dist/indexer/type-hierarchy.js +8 -9
- package/dist/indexer/type-hierarchy.js.map +1 -1
- package/dist/indexer/types.d.ts +49 -1
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/indexer/types.js.map +1 -1
- package/dist/indexer/workspace-symbols.d.ts.map +1 -1
- package/dist/indexer/workspace-symbols.js +3 -13
- package/dist/indexer/workspace-symbols.js.map +1 -1
- package/dist/installer/locks.d.ts +1 -0
- package/dist/installer/locks.d.ts.map +1 -1
- package/dist/installer/locks.js +4 -8
- package/dist/installer/locks.js.map +1 -1
- package/dist/installer/registry.d.ts.map +1 -1
- package/dist/installer/registry.js +9 -15
- package/dist/installer/registry.js.map +1 -1
- package/dist/languages/callable-arity.d.ts.map +1 -1
- package/dist/languages/callable-arity.js +1 -38
- package/dist/languages/callable-arity.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +5 -13
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/java.d.ts.map +1 -1
- package/dist/languages/definitions/java.js +4 -13
- package/dist/languages/definitions/java.js.map +1 -1
- package/dist/languages/definitions/kotlin.d.ts.map +1 -1
- package/dist/languages/definitions/kotlin.js +4 -8
- package/dist/languages/definitions/kotlin.js.map +1 -1
- package/dist/languages/definitions/python.d.ts.map +1 -1
- package/dist/languages/definitions/python.js +5 -3
- package/dist/languages/definitions/python.js.map +1 -1
- package/dist/languages/import-statement-parsers.d.ts +0 -30
- package/dist/languages/import-statement-parsers.d.ts.map +1 -1
- package/dist/languages/import-statement-parsers.js +1 -81
- package/dist/languages/import-statement-parsers.js.map +1 -1
- package/dist/languages/sfc.d.ts.map +1 -1
- package/dist/languages/sfc.js +8 -43
- package/dist/languages/sfc.js.map +1 -1
- package/dist/lifecycle/manifest.d.ts.map +1 -1
- package/dist/lifecycle/manifest.js +11 -29
- package/dist/lifecycle/manifest.js.map +1 -1
- package/dist/mcp/cancellation.d.ts +6 -0
- package/dist/mcp/cancellation.d.ts.map +1 -0
- package/dist/mcp/cancellation.js +11 -0
- package/dist/mcp/cancellation.js.map +1 -0
- package/dist/mcp/handlers.d.ts +54 -3
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +186 -42
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/http-transport.d.ts.map +1 -1
- package/dist/mcp/http-transport.js +9 -2
- package/dist/mcp/http-transport.js.map +1 -1
- package/dist/mcp/index-readiness.d.ts +114 -0
- package/dist/mcp/index-readiness.d.ts.map +1 -0
- package/dist/mcp/index-readiness.js +264 -0
- package/dist/mcp/index-readiness.js.map +1 -0
- package/dist/mcp/project-watcher.d.ts +125 -0
- package/dist/mcp/project-watcher.d.ts.map +1 -0
- package/dist/mcp/project-watcher.js +643 -0
- package/dist/mcp/project-watcher.js.map +1 -0
- package/dist/mcp/protocol.d.ts.map +1 -1
- package/dist/mcp/protocol.js +23 -10
- package/dist/mcp/protocol.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/stale-install.d.ts +13 -0
- package/dist/mcp/stale-install.d.ts.map +1 -0
- package/dist/mcp/stale-install.js +30 -0
- package/dist/mcp/stale-install.js.map +1 -0
- package/dist/native/byte-index.d.ts +1 -0
- package/dist/native/byte-index.d.ts.map +1 -1
- package/dist/native/byte-index.js +1 -1
- package/dist/native/byte-index.js.map +1 -1
- package/dist/native/contracts.d.ts +1 -0
- package/dist/native/contracts.d.ts.map +1 -1
- package/dist/native/native-backend-report.d.ts +2 -1
- package/dist/native/native-backend-report.d.ts.map +1 -1
- package/dist/native/native-backend-report.js +23 -0
- package/dist/native/native-backend-report.js.map +1 -1
- package/dist/native/tree-shape.d.ts +5 -7
- package/dist/native/tree-shape.d.ts.map +1 -1
- package/dist/native/tree-shape.js +11 -10
- package/dist/native/tree-shape.js.map +1 -1
- package/dist/presentation/bounds.d.ts +2 -0
- package/dist/presentation/bounds.d.ts.map +1 -1
- package/dist/presentation/bounds.js +8 -0
- package/dist/presentation/bounds.js.map +1 -1
- package/dist/review/candidates.d.ts.map +1 -1
- package/dist/review/candidates.js +4 -25
- package/dist/review/candidates.js.map +1 -1
- package/dist/review/deleted.js +1 -1
- package/dist/review/deleted.js.map +1 -1
- package/dist/review/report.d.ts.map +1 -1
- package/dist/review/report.js +4 -2
- package/dist/review/report.js.map +1 -1
- package/dist/review/summaries.d.ts.map +1 -1
- package/dist/review/summaries.js +14 -35
- package/dist/review/summaries.js.map +1 -1
- package/dist/review.d.ts +6 -0
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +5 -6
- package/dist/review.js.map +1 -1
- package/dist/scss/navigation.d.ts +13 -0
- package/dist/scss/navigation.d.ts.map +1 -0
- package/dist/scss/navigation.js +150 -0
- package/dist/scss/navigation.js.map +1 -0
- package/dist/scss/resolution.d.ts +190 -0
- package/dist/scss/resolution.d.ts.map +1 -0
- package/dist/scss/resolution.js +1802 -0
- package/dist/scss/resolution.js.map +1 -0
- package/dist/scss/syntax.d.ts +181 -0
- package/dist/scss/syntax.d.ts.map +1 -0
- package/dist/scss/syntax.js +1436 -0
- package/dist/scss/syntax.js.map +1 -0
- package/dist/sql/classify-sql-file.d.ts +7 -0
- package/dist/sql/classify-sql-file.d.ts.map +1 -1
- package/dist/sql/classify-sql-file.js +9 -0
- package/dist/sql/classify-sql-file.js.map +1 -1
- package/dist/sql/extract-facts.d.ts.map +1 -1
- package/dist/sql/extract-facts.js +517 -77
- package/dist/sql/extract-facts.js.map +1 -1
- package/dist/sql/lex.d.ts +100 -1
- package/dist/sql/lex.d.ts.map +1 -1
- package/dist/sql/lex.js +473 -11
- package/dist/sql/lex.js.map +1 -1
- package/dist/sql/lookup.d.ts +17 -0
- package/dist/sql/lookup.d.ts.map +1 -1
- package/dist/sql/lookup.js +21 -0
- package/dist/sql/lookup.js.map +1 -1
- package/dist/sql/navigation.d.ts +28 -1
- package/dist/sql/navigation.d.ts.map +1 -1
- package/dist/sql/navigation.js +474 -84
- package/dist/sql/navigation.js.map +1 -1
- package/dist/sql/object-mentions.d.ts +24 -0
- package/dist/sql/object-mentions.d.ts.map +1 -0
- package/dist/sql/object-mentions.js +233 -0
- package/dist/sql/object-mentions.js.map +1 -0
- package/dist/sql/review.d.ts +3 -0
- package/dist/sql/review.d.ts.map +1 -1
- package/dist/sql/review.js +15 -14
- package/dist/sql/review.js.map +1 -1
- package/dist/sql/routine-mentions.d.ts +61 -0
- package/dist/sql/routine-mentions.d.ts.map +1 -0
- package/dist/sql/routine-mentions.js +868 -0
- package/dist/sql/routine-mentions.js.map +1 -0
- package/dist/sql/source-graph.d.ts +18 -3
- package/dist/sql/source-graph.d.ts.map +1 -1
- package/dist/sql/source-graph.js +109 -32
- package/dist/sql/source-graph.js.map +1 -1
- package/dist/sqlite/raw-query-worker-pool.d.ts.map +1 -1
- package/dist/sqlite/raw-query-worker-pool.js +2 -0
- package/dist/sqlite/raw-query-worker-pool.js.map +1 -1
- package/dist/sqlite/types.d.ts +6 -5
- package/dist/sqlite/types.d.ts.map +1 -1
- package/dist/sqlite/write.d.ts.map +1 -1
- package/dist/sqlite/write.js.map +1 -1
- package/dist/sqlite-driver.d.ts +0 -1
- package/dist/sqlite-driver.d.ts.map +1 -1
- package/dist/sqlite-driver.js +0 -11
- package/dist/sqlite-driver.js.map +1 -1
- package/dist/terraform/navigation.d.ts.map +1 -1
- package/dist/terraform/navigation.js +1 -3
- package/dist/terraform/navigation.js.map +1 -1
- package/dist/terraform/syntax.d.ts.map +1 -1
- package/dist/terraform/syntax.js +1 -4
- package/dist/terraform/syntax.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/util/ast.d.ts +5 -0
- package/dist/util/ast.d.ts.map +1 -1
- package/dist/util/ast.js +10 -0
- package/dist/util/ast.js.map +1 -1
- package/dist/util/atomic-file.d.ts +22 -0
- package/dist/util/atomic-file.d.ts.map +1 -0
- package/dist/util/atomic-file.js +106 -0
- package/dist/util/atomic-file.js.map +1 -0
- package/dist/util/collections.d.ts +5 -0
- package/dist/util/collections.d.ts.map +1 -1
- package/dist/util/collections.js +26 -0
- package/dist/util/collections.js.map +1 -1
- package/dist/util/concurrency.d.ts +8 -0
- package/dist/util/concurrency.d.ts.map +1 -1
- package/dist/util/concurrency.js +16 -0
- package/dist/util/concurrency.js.map +1 -1
- package/dist/util/confined-file.d.ts.map +1 -1
- package/dist/util/confined-file.js +1 -3
- package/dist/util/confined-file.js.map +1 -1
- package/dist/util/csharp-tree.d.ts +65 -0
- package/dist/util/csharp-tree.d.ts.map +1 -0
- package/dist/util/csharp-tree.js +266 -0
- package/dist/util/csharp-tree.js.map +1 -0
- package/dist/util/errors.d.ts +1 -0
- package/dist/util/errors.d.ts.map +1 -1
- package/dist/util/errors.js +3 -0
- package/dist/util/errors.js.map +1 -1
- package/dist/util/graph-edges.d.ts +2 -0
- package/dist/util/graph-edges.d.ts.map +1 -1
- package/dist/util/graph-edges.js +11 -0
- package/dist/util/graph-edges.js.map +1 -1
- package/dist/util/guards.d.ts +1 -0
- package/dist/util/guards.d.ts.map +1 -1
- package/dist/util/guards.js +6 -0
- package/dist/util/guards.js.map +1 -1
- package/dist/util/identifiers.d.ts +0 -24
- package/dist/util/identifiers.d.ts.map +1 -1
- package/dist/util/identifiers.js +0 -24
- package/dist/util/identifiers.js.map +1 -1
- package/dist/util/jvm-tree.d.ts +58 -0
- package/dist/util/jvm-tree.d.ts.map +1 -0
- package/dist/util/jvm-tree.js +153 -0
- package/dist/util/jvm-tree.js.map +1 -0
- package/dist/util/package-exports.d.ts +0 -22
- package/dist/util/package-exports.d.ts.map +1 -1
- package/dist/util/package-exports.js +25 -5
- package/dist/util/package-exports.js.map +1 -1
- package/dist/util/paths.d.ts +1 -0
- package/dist/util/paths.d.ts.map +1 -1
- package/dist/util/paths.js +10 -4
- package/dist/util/paths.js.map +1 -1
- package/dist/util/resolution/csharp.d.ts +20 -8
- package/dist/util/resolution/csharp.d.ts.map +1 -1
- package/dist/util/resolution/csharp.js +126 -127
- package/dist/util/resolution/csharp.js.map +1 -1
- package/dist/util/resolution/files.d.ts +6 -0
- package/dist/util/resolution/files.d.ts.map +1 -1
- package/dist/util/resolution/files.js +74 -21
- package/dist/util/resolution/files.js.map +1 -1
- package/dist/util/resolution/jvm.d.ts +21 -1
- package/dist/util/resolution/jvm.d.ts.map +1 -1
- package/dist/util/resolution/jvm.js +168 -100
- package/dist/util/resolution/jvm.js.map +1 -1
- package/dist/util/resolution/project-symbols.d.ts +1 -1
- package/dist/util/resolution/project-symbols.d.ts.map +1 -1
- package/dist/util/resolution/project-symbols.js.map +1 -1
- package/dist/util/resolution/specifier-targets.d.ts +4 -0
- package/dist/util/resolution/specifier-targets.d.ts.map +1 -1
- package/dist/util/resolution/specifier-targets.js +11 -3
- package/dist/util/resolution/specifier-targets.js.map +1 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +21 -7
- package/dist/util/resolution.js.map +1 -1
- package/dist/util/syntax-tree.d.ts +16 -0
- package/dist/util/syntax-tree.d.ts.map +1 -0
- package/dist/util/syntax-tree.js +34 -0
- package/dist/util/syntax-tree.js.map +1 -0
- package/dist/util/text-scanning.d.ts +6 -0
- package/dist/util/text-scanning.d.ts.map +1 -0
- package/dist/util/text-scanning.js +35 -0
- package/dist/util/text-scanning.js.map +1 -0
- package/dist/util/trivia-tables.d.ts +13 -8
- package/dist/util/trivia-tables.d.ts.map +1 -1
- package/dist/util/trivia-tables.js +13 -72
- package/dist/util/trivia-tables.js.map +1 -1
- package/dist/util/trivia.d.ts +10 -3
- package/dist/util/trivia.d.ts.map +1 -1
- package/dist/util/trivia.js +209 -79
- package/dist/util/trivia.js.map +1 -1
- package/dist/util/windows-process-drain.d.ts.map +1 -1
- package/dist/util/windows-process-drain.js.map +1 -1
- package/dist/util/worker-threads.d.ts +16 -0
- package/dist/util/worker-threads.d.ts.map +1 -1
- package/dist/util/worker-threads.js +118 -0
- package/dist/util/worker-threads.js.map +1 -1
- package/dist/worker/native-worker-pool.d.ts.map +1 -1
- package/dist/worker/native-worker-pool.js +2 -1
- package/dist/worker/native-worker-pool.js.map +1 -1
- package/docs/mcp.md +82 -8
- package/package.json +7 -7
|
@@ -1,142 +1,124 @@
|
|
|
1
|
-
import { supportForFileWithoutHeaderSample } from "../../languages.js";
|
|
1
|
+
import { languageExtensionPatterns, normalizeLanguageExtensions, supportForFileWithoutHeaderSample, } from "../../languages.js";
|
|
2
2
|
import { confineResolvedPath, fileIdentityKey, readUtf8WithoutBom } from "../paths.js";
|
|
3
|
-
import {
|
|
3
|
+
import { normalizeCsharpIdentifier, normalizeCsharpQualifiedName } from "../identifiers.js";
|
|
4
4
|
import { getImportableLanguageGlobs } from "../resolution-candidates.js";
|
|
5
|
-
import { maskTrivia } from "../trivia.js";
|
|
6
5
|
import { selectUniqueCsharpNamespaceTypeFile } from "../../indexer/shared-owner-identity.js";
|
|
7
6
|
import { CSHARP_PACKAGE_MANIFEST_NAMES, resolveNearestManifestRoot } from "./files.js";
|
|
8
|
-
import { buildDeclaredContainerIndex,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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");
|
|
7
|
+
import { buildDeclaredContainerIndex, } from "./project-symbols.js";
|
|
8
|
+
import { recordParserBackendDegradation } from "../../native/native-backend-report.js";
|
|
9
|
+
import { CSHARP_FILE_LOCAL_PREFIX, collectCsharpNamespaceFacts } from "../csharp-tree.js";
|
|
10
|
+
import { parseSyntaxTree } from "../syntax-tree.js";
|
|
11
|
+
/** The namespace facts known per file during one build, from a reused module or from the file's own tree. */
|
|
18
12
|
const csharpNamespaceFileCache = new Map();
|
|
19
13
|
const csharpProjectNamespaceIndexCache = new Map();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
function
|
|
27
|
-
|
|
14
|
+
const NO_CSHARP_NAMESPACE_FACTS = { regions: [], types: [] };
|
|
15
|
+
function csharpNamespaceCacheKey(anchor, languageExtensions) {
|
|
16
|
+
const mappings = Object.entries(normalizeLanguageExtensions(languageExtensions) ?? {});
|
|
17
|
+
return anchor + "\0" + JSON.stringify(mappings);
|
|
18
|
+
}
|
|
19
|
+
/** The built-in C# suffixes plus every extension the active mapping assigns to C#. */
|
|
20
|
+
function csharpCandidateGlobs(languageExtensions) {
|
|
21
|
+
const csharpMappings = Object.fromEntries(Object.entries(normalizeLanguageExtensions(languageExtensions) ?? {}).filter(([, languageId]) => languageId === "csharp"));
|
|
22
|
+
return [...getImportableLanguageGlobs("csharp"), ...languageExtensionPatterns(csharpMappings)];
|
|
28
23
|
}
|
|
29
24
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
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.
|
|
25
|
+
* Gives the project scan the namespace facts a build already holds for `file`, so the scan parses nothing for
|
|
26
|
+
* it. A module's facts come from its own syntax tree and depend on no other file, so they stay valid while the
|
|
27
|
+
* file's content does. Call this after the build's caches are cleared and before its first resolution.
|
|
35
28
|
*/
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
export function primeCsharpNamespaceFacts(file, facts, languageExtensions) {
|
|
30
|
+
csharpNamespaceFileCache.set(csharpNamespaceCacheKey(fileIdentityKey(file), languageExtensions), facts);
|
|
31
|
+
}
|
|
32
|
+
/** The namespaces `facts` declare, each with the types declared directly in it. */
|
|
33
|
+
function declaredContainersOf(facts) {
|
|
39
34
|
const symbolsByNamespace = new Map();
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
let cursor = 0;
|
|
44
|
-
const events = [];
|
|
45
|
-
for (const match of masked.matchAll(CSHARP_NAMESPACE_DECLARATION_PATTERN)) {
|
|
46
|
-
events.push({ index: match.index ?? 0, kind: "namespace", match });
|
|
35
|
+
for (const region of facts.regions) {
|
|
36
|
+
if (region.name && !symbolsByNamespace.has(region.name))
|
|
37
|
+
symbolsByNamespace.set(region.name, new Set());
|
|
47
38
|
}
|
|
48
|
-
for (const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
for (; cursor < to; cursor += 1) {
|
|
54
|
-
const ch = masked[cursor];
|
|
55
|
-
if (ch === "{") {
|
|
56
|
-
depth += 1;
|
|
57
|
-
}
|
|
58
|
-
else if (ch === "}") {
|
|
59
|
-
depth -= 1;
|
|
60
|
-
while (scopes.length && scopes[scopes.length - 1].openedDepth >= depth)
|
|
61
|
-
scopes.pop();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
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;
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
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);
|
|
39
|
+
for (const type of facts.types) {
|
|
40
|
+
const declared = type.startsWith(CSHARP_FILE_LOCAL_PREFIX) ? type.slice(CSHARP_FILE_LOCAL_PREFIX.length) : type;
|
|
41
|
+
const separator = declared.lastIndexOf(".");
|
|
42
|
+
if (separator > 0)
|
|
43
|
+
symbolsByNamespace.get(declared.slice(0, separator))?.add(declared.slice(separator + 1));
|
|
105
44
|
}
|
|
106
|
-
return
|
|
45
|
+
return Array.from(symbolsByNamespace, ([name, symbols]) => ({ name, symbols }));
|
|
107
46
|
}
|
|
108
|
-
|
|
109
|
-
|
|
47
|
+
/**
|
|
48
|
+
* The namespace facts of one file: the facts a build primed, else those of its retained tree, else those of a
|
|
49
|
+
* fresh parse. `null` when its tree is unavailable, which leaves the file's declarations unknown.
|
|
50
|
+
*/
|
|
51
|
+
async function readCsharpNamespaceFacts(filePath, languageExtensions, report, parsedFiles) {
|
|
52
|
+
const fileKey = fileIdentityKey(filePath);
|
|
53
|
+
const cacheKey = csharpNamespaceCacheKey(fileKey, languageExtensions);
|
|
54
|
+
const cached = csharpNamespaceFileCache.get(cacheKey);
|
|
110
55
|
if (cached)
|
|
111
56
|
return cached;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
57
|
+
const support = supportForFileWithoutHeaderSample(filePath, languageExtensions);
|
|
58
|
+
// An active mapping can give a C# suffix to another language; such a file declares no namespace.
|
|
59
|
+
if (support?.id !== "csharp")
|
|
60
|
+
return NO_CSHARP_NAMESPACE_FACTS;
|
|
61
|
+
const retained = parsedFiles?.get(fileKey);
|
|
62
|
+
let tree = retained?.sup?.id === "csharp" ? retained.tree : undefined;
|
|
63
|
+
if (!tree) {
|
|
64
|
+
const parsed = parseSyntaxTree(await readUtf8WithoutBom(filePath), support);
|
|
65
|
+
if (!parsed.tree) {
|
|
66
|
+
recordParserBackendDegradation(report, {
|
|
67
|
+
file: slashPath(filePath),
|
|
68
|
+
languageId: support.id,
|
|
69
|
+
...(parsed.fallbackReason ? { nativeFallbackReason: parsed.fallbackReason } : {}),
|
|
70
|
+
...(parsed.error ? { nativeError: parsed.error } : {}),
|
|
71
|
+
});
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
tree = parsed.tree;
|
|
75
|
+
}
|
|
76
|
+
const facts = collectCsharpNamespaceFacts(tree);
|
|
77
|
+
csharpNamespaceFileCache.set(cacheKey, facts);
|
|
78
|
+
return facts;
|
|
117
79
|
}
|
|
118
|
-
async function getCsharpProjectNamespaceIndex(indexRoot) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
80
|
+
async function getCsharpProjectNamespaceIndex(indexRoot, languageExtensions = undefined, report = undefined, parsedFiles) {
|
|
81
|
+
const cacheKey = csharpNamespaceCacheKey(indexRoot, languageExtensions);
|
|
82
|
+
let pending = csharpProjectNamespaceIndexCache.get(cacheKey);
|
|
83
|
+
if (!pending) {
|
|
84
|
+
let complete = true;
|
|
85
|
+
pending = buildDeclaredContainerIndex(indexRoot, csharpCandidateGlobs(languageExtensions), async (filePath) => {
|
|
86
|
+
let facts;
|
|
87
|
+
try {
|
|
88
|
+
facts = await readCsharpNamespaceFacts(filePath, languageExtensions, report, parsedFiles);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
complete = false;
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
if (!facts) {
|
|
95
|
+
complete = false;
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
return declaredContainersOf(facts);
|
|
99
|
+
})
|
|
100
|
+
.then((index) => ({ index, complete }))
|
|
101
|
+
.catch((error) => {
|
|
102
|
+
csharpProjectNamespaceIndexCache.delete(cacheKey);
|
|
103
|
+
throw error;
|
|
124
104
|
});
|
|
125
|
-
|
|
105
|
+
csharpProjectNamespaceIndexCache.set(cacheKey, pending);
|
|
106
|
+
}
|
|
107
|
+
return await pending;
|
|
126
108
|
}
|
|
127
109
|
/**
|
|
128
110
|
* Every file under the nearest C# project manifest (or `projectRoot` when none
|
|
129
111
|
* exists) that declares `spec` as a namespace, via either a block-scoped or a
|
|
130
112
|
* file-scoped namespace declaration. Sorted by the shared project symbol index.
|
|
131
113
|
*/
|
|
132
|
-
export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile, languageExtensions) {
|
|
114
|
+
export async function resolveCsharpNamespaceImportPaths(projectRoot, spec, fromFile, languageExtensions, report, parsedFiles) {
|
|
133
115
|
const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
|
|
134
|
-
const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot);
|
|
116
|
+
const projectIndex = await getCsharpProjectNamespaceIndex(indexRoot, languageExtensions, report, parsedFiles);
|
|
135
117
|
const normalized = normalizeCsharpQualifiedName(spec);
|
|
136
118
|
const lookup = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
|
|
137
119
|
if (!lookup)
|
|
138
120
|
return [];
|
|
139
|
-
const packageCandidates = projectIndex.filesByPackage.get(lookup) ?? [];
|
|
121
|
+
const packageCandidates = projectIndex.index.filesByPackage.get(lookup) ?? [];
|
|
140
122
|
const confined = [];
|
|
141
123
|
for (const candidate of packageCandidates) {
|
|
142
124
|
const hit = await confineResolvedPath(projectRoot, candidate);
|
|
@@ -149,8 +131,8 @@ function slashPath(filePath) {
|
|
|
149
131
|
return filePath.replace(/\\/g, "/");
|
|
150
132
|
}
|
|
151
133
|
/**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
134
|
+
* Candidate discovery uses C# filename globs. An active extension mapping can assign one of those
|
|
135
|
+
* suffixes to another language, and such a file is never a C# namespace or type target.
|
|
154
136
|
*/
|
|
155
137
|
function isActiveCsharpFile(file, languageExtensions) {
|
|
156
138
|
return !languageExtensions || supportForFileWithoutHeaderSample(file, languageExtensions)?.id === "csharp";
|
|
@@ -177,7 +159,7 @@ async function confineCsharpTypeFiles(projectRoot, files, languageExtensions) {
|
|
|
177
159
|
* collapses them to one representative; otherwise the result is `ambiguous` or
|
|
178
160
|
* `partial` and never the first path.
|
|
179
161
|
*/
|
|
180
|
-
export async function resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions) {
|
|
162
|
+
export async function resolveCsharpNamespaceTypePath(projectRoot, namespaceName, typeName, fromFile, languageExtensions, report, parsedFiles) {
|
|
181
163
|
const normalizedNamespace = normalizeCsharpQualifiedName(namespaceName);
|
|
182
164
|
const namespaceLookup = normalizedNamespace.startsWith("global::")
|
|
183
165
|
? normalizedNamespace.slice("global::".length)
|
|
@@ -186,30 +168,47 @@ export async function resolveCsharpNamespaceTypePath(projectRoot, namespaceName,
|
|
|
186
168
|
if (!namespaceLookup || !normalizedType)
|
|
187
169
|
return { status: "not_found" };
|
|
188
170
|
const indexRoot = await resolveNearestManifestRoot(projectRoot, fromFile, CSHARP_PACKAGE_MANIFEST_NAMES);
|
|
189
|
-
const
|
|
190
|
-
|
|
171
|
+
const projectIndexResult = await getCsharpProjectNamespaceIndex(indexRoot, languageExtensions, report, parsedFiles);
|
|
172
|
+
if (!projectIndexResult.complete)
|
|
173
|
+
return { status: "partial" };
|
|
174
|
+
const files = projectIndexResult.index.filesByPackageSymbol.get(namespaceLookup)?.get(normalizedType) ?? [];
|
|
191
175
|
const confined = await confineCsharpTypeFiles(projectRoot, files, languageExtensions);
|
|
192
176
|
if (confined.length === 0)
|
|
193
177
|
return { status: "not_found" };
|
|
194
178
|
if (confined.length === 1)
|
|
195
179
|
return { status: "found", file: confined[0] };
|
|
196
|
-
|
|
180
|
+
const selected = selectUniqueCsharpNamespaceTypeFile(confined, namespaceLookup, normalizedType, languageExtensions, parsedFiles);
|
|
181
|
+
return selected.status === "found" ? { ...selected, parts: confined.length } : selected;
|
|
197
182
|
}
|
|
198
|
-
/**
|
|
199
|
-
|
|
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) {
|
|
183
|
+
/** The namespace and type of a dotted C# type name (`N.Solo`); `null` for a generic or single-segment name. */
|
|
184
|
+
function splitCsharpTypeName(spec) {
|
|
205
185
|
const normalized = normalizeCsharpQualifiedName(spec);
|
|
186
|
+
if (normalized.includes("<") || normalized.includes(">"))
|
|
187
|
+
return null;
|
|
206
188
|
const body = normalized.startsWith("global::") ? normalized.slice("global::".length) : normalized;
|
|
207
189
|
const parts = body.split(".").filter(Boolean);
|
|
208
190
|
if (parts.length < 2)
|
|
191
|
+
return null;
|
|
192
|
+
return { namespaceName: parts.slice(0, -1).join("."), typeName: parts[parts.length - 1] };
|
|
193
|
+
}
|
|
194
|
+
/** Resolves a C# namespace-qualified type from its source name. */
|
|
195
|
+
export async function resolveCsharpDottedTypeImportPath(projectRoot, spec, fromFile, languageExtensions, report, parsedFiles) {
|
|
196
|
+
const split = splitCsharpTypeName(spec);
|
|
197
|
+
if (!split)
|
|
209
198
|
return { status: "not_found" };
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
199
|
+
return await resolveCsharpNamespaceTypePath(projectRoot, split.namespaceName, split.typeName, fromFile, languageExtensions, report, parsedFiles);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Whether a project file declares the namespace a dotted C# type name qualifies (`N` for `N.Solo`). The type lookup
|
|
203
|
+
* over a declared namespace is authoritative: `N.Solo` never names the generic `Solo<T>`, so a path-like guess
|
|
204
|
+
* (`N/Solo.cs`) must not answer when that lookup finds no type.
|
|
205
|
+
*/
|
|
206
|
+
export async function csharpTypeNameQualifierDeclared(projectRoot, spec, fromFile, languageExtensions, report, parsedFiles) {
|
|
207
|
+
const split = splitCsharpTypeName(spec);
|
|
208
|
+
if (!split)
|
|
209
|
+
return false;
|
|
210
|
+
const declaring = await resolveCsharpNamespaceImportPaths(projectRoot, split.namespaceName, fromFile, languageExtensions, report, parsedFiles);
|
|
211
|
+
return declaring.length > 0;
|
|
213
212
|
}
|
|
214
213
|
export function clearCsharpResolutionCaches() {
|
|
215
214
|
csharpNamespaceFileCache.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../src/util/resolution/csharp.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,11 @@ export declare const PYTHON_PACKAGE_MANIFEST_NAMES: readonly ["pyproject.toml",
|
|
|
5
5
|
export declare function findNearestFile(startDir: string, stopDir: string, fileName: string): Promise<string | null>;
|
|
6
6
|
export declare function findNearestManifest(startDir: string, stopDir: string, names: readonly string[]): Promise<string | null>;
|
|
7
7
|
export declare function resolveNearestManifestRoot(projectRoot: string, fromFile: string, names: readonly string[]): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* {@link resolveNearestManifestRoot} for the one lookup that cannot await: C# alias shadowing runs inside
|
|
10
|
+
* synchronous name resolution. It walks the same directories under the same nearest-manifest rule, so both name
|
|
11
|
+
* the same project root. It reads the live file system, as the build does when it resolves a using directive.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveNearestManifestRootSync(projectRoot: string, fromFile: string, names: readonly string[]): string;
|
|
8
14
|
export declare function isDirectory(p: string): Promise<boolean>;
|
|
9
15
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/files.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,0BAA0B,oGAM7B,CAAC;AAEX,eAAO,MAAM,6BAA6B,uBAAwB,CAAC;AAEnE,eAAO,MAAM,0BAA0B,4BAA6B,CAAC;AAErE,eAAO,MAAM,6BAA6B,iEAAkE,CAAC;AA0D7G,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEjH;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/util/resolution/files.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,0BAA0B,oGAM7B,CAAC;AAEX,eAAO,MAAM,6BAA6B,uBAAwB,CAAC;AAEnE,eAAO,MAAM,0BAA0B,4BAA6B,CAAC;AAErE,eAAO,MAAM,6BAA6B,iEAAkE,CAAC;AA0D7G,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEjH;AAoBD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAcD,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAyBD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,CAOR;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs, {} from "node:fs";
|
|
1
2
|
import fsp from "node:fs/promises";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { fileIdentityKey, isFilePathWithinRoot } from "../paths.js";
|
|
@@ -77,11 +78,28 @@ function sortManifestMatches(dir, suffix, names) {
|
|
|
77
78
|
export async function findNearestFile(startDir, stopDir, fileName) {
|
|
78
79
|
return await findNearestManifest(startDir, stopDir, [fileName]);
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
+
/**
|
|
82
|
+
* The directories from `startDir` up to `stopDir`, nearest first. The walk ends at `stopDir`, at the file
|
|
83
|
+
* system root, or where the next parent would leave `stopDir`. The async and sync manifest lookups share it.
|
|
84
|
+
*/
|
|
85
|
+
function* ancestorDirectories(startDir, stopDir) {
|
|
81
86
|
let dir = path.resolve(startDir);
|
|
82
87
|
const stop = path.resolve(stopDir);
|
|
83
88
|
const stopKey = fileIdentityKey(stop);
|
|
84
89
|
while (true) {
|
|
90
|
+
yield dir;
|
|
91
|
+
if (dir === stop || fileIdentityKey(dir) === stopKey)
|
|
92
|
+
return;
|
|
93
|
+
const parent = path.dirname(dir);
|
|
94
|
+
if (parent === dir)
|
|
95
|
+
return;
|
|
96
|
+
if (!isFilePathWithinRoot(stop, parent) && fileIdentityKey(parent) !== stopKey)
|
|
97
|
+
return;
|
|
98
|
+
dir = parent;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export async function findNearestManifest(startDir, stopDir, names) {
|
|
102
|
+
for (const dir of ancestorDirectories(startDir, stopDir)) {
|
|
85
103
|
for (const name of names) {
|
|
86
104
|
if (isExtensionManifestPattern(name)) {
|
|
87
105
|
const suffix = name.slice(1).toLowerCase();
|
|
@@ -94,32 +112,67 @@ export async function findNearestManifest(startDir, stopDir, names) {
|
|
|
94
112
|
if (await fileExists(candidate))
|
|
95
113
|
return candidate;
|
|
96
114
|
}
|
|
97
|
-
if (dir === stop || fileIdentityKey(dir) === stopKey)
|
|
98
|
-
break;
|
|
99
|
-
const parent = path.dirname(dir);
|
|
100
|
-
if (parent === dir)
|
|
101
|
-
break;
|
|
102
|
-
if (!isFilePathWithinRoot(stop, parent) && fileIdentityKey(parent) !== stopKey)
|
|
103
|
-
break;
|
|
104
|
-
dir = parent;
|
|
105
115
|
}
|
|
106
116
|
return null;
|
|
107
117
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
/**
|
|
119
|
+
* The resolved root and the directory a manifest search starts in, which is `null` for an empty or out-of-root
|
|
120
|
+
* importer. Those fall back to the root here, not by omitting `fromFile` at call sites.
|
|
121
|
+
*/
|
|
122
|
+
function manifestSearchStart(projectRoot, fromFile) {
|
|
123
|
+
const root = path.resolve(projectRoot);
|
|
111
124
|
if (!fromFile)
|
|
112
|
-
return
|
|
125
|
+
return { root, startDir: null };
|
|
113
126
|
const startDir = path.dirname(path.resolve(fromFile));
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
127
|
+
const withinRoot = fileIdentityKey(startDir) === fileIdentityKey(root) || isFilePathWithinRoot(root, startDir);
|
|
128
|
+
return { root, startDir: withinRoot ? startDir : null };
|
|
129
|
+
}
|
|
130
|
+
export async function resolveNearestManifestRoot(projectRoot, fromFile, names) {
|
|
131
|
+
const { root, startDir } = manifestSearchStart(projectRoot, fromFile);
|
|
132
|
+
if (!startDir)
|
|
133
|
+
return root;
|
|
134
|
+
const manifest = await findNearestManifest(startDir, root, names);
|
|
135
|
+
return manifest ? path.dirname(path.resolve(manifest)) : root;
|
|
136
|
+
}
|
|
137
|
+
function statIsFileSync(target) {
|
|
138
|
+
try {
|
|
139
|
+
return fs.statSync(target).isFile();
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function directoryHasManifestSync(dir, name) {
|
|
146
|
+
if (!isExtensionManifestPattern(name))
|
|
147
|
+
return statIsFileSync(path.join(dir, name));
|
|
148
|
+
const suffix = name.slice(1).toLowerCase();
|
|
149
|
+
let entries;
|
|
150
|
+
try {
|
|
151
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return entries.some((entry) => {
|
|
157
|
+
if (!entry.name.toLowerCase().endsWith(suffix) || entry.isDirectory())
|
|
158
|
+
return false;
|
|
159
|
+
return entry.isFile() || statIsFileSync(path.join(dir, entry.name));
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* {@link resolveNearestManifestRoot} for the one lookup that cannot await: C# alias shadowing runs inside
|
|
164
|
+
* synchronous name resolution. It walks the same directories under the same nearest-manifest rule, so both name
|
|
165
|
+
* the same project root. It reads the live file system, as the build does when it resolves a using directive.
|
|
166
|
+
*/
|
|
167
|
+
export function resolveNearestManifestRootSync(projectRoot, fromFile, names) {
|
|
168
|
+
const { root, startDir } = manifestSearchStart(projectRoot, fromFile);
|
|
169
|
+
if (!startDir)
|
|
170
|
+
return root;
|
|
171
|
+
for (const dir of ancestorDirectories(startDir, root)) {
|
|
172
|
+
if (names.some((name) => directoryHasManifestSync(dir, name)))
|
|
173
|
+
return dir;
|
|
118
174
|
}
|
|
119
|
-
|
|
120
|
-
if (!manifest)
|
|
121
|
-
return resolvedRoot;
|
|
122
|
-
return path.dirname(path.resolve(manifest));
|
|
175
|
+
return root;
|
|
123
176
|
}
|
|
124
177
|
export async function isDirectory(p) {
|
|
125
178
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/util/resolution/files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/util/resolution/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
import { type JvmFileFacts } from "../jvm-tree.js";
|
|
2
|
+
import { type JvmLanguageId } from "../syntax-tree.js";
|
|
1
3
|
type JvmImportResolutionOptions = {
|
|
2
|
-
languageId:
|
|
4
|
+
languageId: JvmLanguageId;
|
|
3
5
|
fromFile: string;
|
|
4
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* An import's target file, and whether a file that was not read in full kept the lookup from proving it. A package
|
|
9
|
+
* wildcard (`p.*`) names every file of its package, so its `file` is only the first of them.
|
|
10
|
+
*/
|
|
11
|
+
type JvmImportLookup = {
|
|
12
|
+
file: string | null;
|
|
13
|
+
incomplete: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Gives the project scan the facts a build already holds for `file`, so the scan parses nothing for it. */
|
|
16
|
+
export declare function primeJvmFileFacts(file: string, facts: JvmFileFacts): void;
|
|
5
17
|
export declare function resolveJvmPackageImportPaths(projectRoot: string, spec: string, fromFile: string): Promise<string[]>;
|
|
18
|
+
/**
|
|
19
|
+
* The file a named import (`com.acme.Type`) names, and whether an incomplete file kept the lookup from proving it. An
|
|
20
|
+
* incomplete lookup has no file: callers must not guess one from the name, and its importer is incomplete until that
|
|
21
|
+
* file reads. Every form of import asks this for its `from` name: the type, the owner of a static member, or the type
|
|
22
|
+
* of a wildcard. A package wildcard also asks it for `p.*`, the files of package `p`, which no lookup proves while a
|
|
23
|
+
* file whose package could not be read may be one of them, or one of them was not read in full.
|
|
24
|
+
*/
|
|
25
|
+
export declare function lookupJvmImport(projectRoot: string, spec: string, options: JvmImportResolutionOptions): Promise<JvmImportLookup>;
|
|
6
26
|
export declare function resolveJvmImportPath(projectRoot: string, spec: string, options: JvmImportResolutionOptions): Promise<string | null>;
|
|
7
27
|
export declare function clearJvmResolutionCaches(): void;
|
|
8
28
|
export {};
|
|
@@ -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":"AASA,OAAO,EAA0D,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3G,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKxE,KAAK,0BAA0B,GAAG;IAChC,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAaF;;;GAGG;AACH,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC;AASpE,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAEzE;AA4HD,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;AAwHD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C"}
|