Skip to content

Commit 76c5e96

Browse files
committed
chore: use a map for performance when searching repos by owner and name
1 parent 45b3bea commit 76c5e96

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/git/repository.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export interface GitHubRepoContext {
136136
export interface GitHubContext {
137137
repos: GitHubRepoContext[];
138138
reposByUri: Map<string, GitHubRepoContext>;
139+
reposByOwnerAndName: Map<string, GitHubRepoContext>;
139140
username: string;
140141
}
141142

@@ -199,6 +200,7 @@ export async function getGitHubContext(): Promise<GitHubContext | undefined> {
199200
gitHubContext = Promise.resolve({
200201
repos,
201202
reposByUri: new Map(repos.map(r => [r.workspaceUri.toString(), r])),
203+
reposByOwnerAndName: new Map(repos.map(r => [`${r.owner}/${r.name}`.toLocaleLowerCase(), r])),
202204
username
203205
});
204206
} catch (e) {
@@ -224,11 +226,8 @@ export async function getGitHubContextForRepo(owner: string, name: string): Prom
224226
return undefined;
225227
}
226228

227-
return gitHubContext.repos.find(
228-
r =>
229-
r.owner.toLocaleLowerCase() === owner.toLocaleLowerCase() &&
230-
r.name.toLocaleLowerCase() === name.toLocaleLowerCase()
231-
);
229+
const searchKey = `${owner}/${name}`.toLocaleLowerCase();
230+
return gitHubContext.reposByOwnerAndName.get(searchKey);
232231
}
233232

234233
export async function getGitHubContextForWorkspaceUri(

0 commit comments

Comments
 (0)