Skip to content

Commit d9feee0

Browse files
committed
fix: ensure workspace context initial
1 parent daf8c6a commit d9feee0

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

src/utils/workspace.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@ class WorkspaceContext {
2323
packageManager: PackageManager = 'npm'
2424
catalogs?: CatalogsInfo
2525

26-
constructor(folder: WorkspaceFolder) {
26+
private constructor(folder: WorkspaceFolder) {
2727
this.folder = folder
28-
this.#init()
2928
}
3029

31-
async #init() {
32-
this.packageManager = await detectPackageManager(this.folder)
30+
static async create(folder: WorkspaceFolder): Promise<WorkspaceContext> {
31+
const ctx = new WorkspaceContext(folder)
32+
ctx.packageManager = await detectPackageManager(folder)
3333

34-
if (this.packageManager !== 'npm') {
35-
const workspaceFilename = workspaceFileMapping[this.packageManager]
36-
const workspaceFile = Uri.joinPath(this.folder.uri, workspaceFilename)
37-
this.catalogs = (await this.loadWorkspaceCatalogInfo(workspaceFile))?.catalogs
34+
if (ctx.packageManager !== 'npm') {
35+
const workspaceFilename = workspaceFileMapping[ctx.packageManager]
36+
const workspaceFile = Uri.joinPath(folder.uri, workspaceFilename)
37+
ctx.catalogs = (await ctx.loadWorkspaceCatalogInfo(workspaceFile))?.catalogs
3838
}
39+
40+
return ctx
3941
}
4042

4143
#memoizeOptions: MemoizeOptions<Uri> = {
@@ -93,7 +95,7 @@ class WorkspaceContext {
9395

9496
return {
9597
...info,
96-
dependencies: info.dependencies.map(dep => this.#createResolvedDependencyInfo(dep)),
98+
dependencies: info.dependencies.map((dep) => this.#createResolvedDependencyInfo(dep)),
9799
}
98100
}, this.#memoizeOptions)
99101

@@ -118,7 +120,7 @@ class WorkspaceContext {
118120

119121
return {
120122
...info,
121-
dependencies: info.dependencies.map(dep => this.#createResolvedDependencyInfo(dep)),
123+
dependencies: info.dependencies.map((dep) => this.#createResolvedDependencyInfo(dep)),
122124
}
123125
}, this.#memoizeOptions)
124126
}
@@ -129,7 +131,7 @@ export const getWorkspaceContext = memoize<Uri, Promise<WorkspaceContext | undef
129131
return
130132

131133
logger.info(`[workspace-context] built ${folder.uri.path}`)
132-
return new WorkspaceContext(folder)
134+
return WorkspaceContext.create(folder)
133135
}, {
134136
getKey: (uri: Uri) => workspace.getWorkspaceFolder(uri)!.uri.path,
135137
ttl: false,

0 commit comments

Comments
 (0)