11import type { CatalogsInfo , ResolvedDependencyInfo , WorkspaceContext } from '#types/context'
22import type { DependencyInfo , PackageManifestInfo , WorkspaceCatalogInfo } from '#types/extractor'
33import type { MemoizedFunction } from '#utils/memoize'
4- import type { Uri , WorkspaceFolder } from 'vscode'
4+ import type { WorkspaceFolder } from 'vscode'
55import { packageManifestExtractorEntry , workspaceCatalogExtractorEntries } from '#extractors'
66import { logger } from '#state'
77import { getPackageInfo } from '#utils/api/package'
@@ -10,7 +10,7 @@ import { resolveDependencySpec } from '#utils/dependency'
1010import { memoize } from '#utils/memoize'
1111import { resolveExactVersion } from '#utils/package'
1212import { detectPackageManager } from '#utils/package-manager'
13- import { workspace } from 'vscode'
13+ import { Uri , workspace } from 'vscode'
1414import { getDocumentText } from './document'
1515
1616type WithResolvedDependencyInfo < T > = Omit < T , 'dependencies' > & {
@@ -71,7 +71,6 @@ export const getWorkspaceContextState = memoize<Uri, Promise<WorkspaceContextSta
7171 if ( ! folder )
7272 return
7373
74- const workspacePath = folder . uri . path
7574 const packageManager = await detectPackageManager ( folder )
7675
7776 const loadWorkspaceCatalogInfo = memoize ( async ( uri : Uri ) : Promise < WithResolvedDependencyInfo < WorkspaceCatalogInfo > | undefined > => {
@@ -94,11 +93,17 @@ export const getWorkspaceContextState = memoize<Uri, Promise<WorkspaceContextSta
9493 }
9594 } , { ttl : false , maxSize : Number . POSITIVE_INFINITY , fallbackToCachedOnError : false } )
9695
97- const catalogs = packageManager === 'npm'
98- ? undefined
99- : ( await loadWorkspaceCatalogInfo ( folder . uri ) ) ?. catalogs
96+ let catalogs : CatalogsInfo | undefined
10097
101- logger . info ( `[workspace-context] built ${ workspacePath } ` )
98+ if ( packageManager !== 'npm' ) {
99+ const workspaceFile = Uri . joinPath (
100+ folder . uri ,
101+ workspaceCatalogExtractorEntries . find ( ( entry ) => packageManager === entry . packageManager ) ! . basename ,
102+ )
103+ catalogs = ( await loadWorkspaceCatalogInfo ( workspaceFile ) ) ?. catalogs
104+ }
105+
106+ logger . info ( `[workspace-context] built ${ folder . uri . path } ` )
102107
103108 return {
104109 folder,
@@ -107,7 +112,7 @@ export const getWorkspaceContextState = memoize<Uri, Promise<WorkspaceContextSta
107112 catalogs,
108113 } ,
109114 loadPackageManifestInfo : memoize ( async ( uri : Uri ) => {
110- if ( isPackageManifestPath ( uri . path ) )
115+ if ( ! isPackageManifestPath ( uri . path ) )
111116 return
112117
113118 const text = await getDocumentText ( uri )
0 commit comments