From 82e5c0b74e42b5047e7b82ba8ad56104fa15d0d5 Mon Sep 17 00:00:00 2001 From: kalvens Date: Wed, 10 May 2023 20:07:57 -0500 Subject: [PATCH] perf(language-service): uneeded await blocking other iterations from running --- .../src/languageService.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/vue-language-service/src/languageService.ts b/packages/vue-language-service/src/languageService.ts index 2e3b9b71f..6cf9d871d 100644 --- a/packages/vue-language-service/src/languageService.ts +++ b/packages/vue-language-service/src/languageService.ts @@ -82,28 +82,30 @@ function resolvePlugins( ); // handle component auto-import patch + const nameCasingPromises: Promise[] = []; for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; if (virtualFile instanceof vue.VueFile) { const isAutoImport = !!map.toSourcePosition(position, data => typeof data.completion === 'object' && !!data.completion.autoImportOnly); if (isAutoImport) { - result.items.forEach(item => { + for (const item of result.items) { item.data.__isComponentAutoImport = true; - }); - - // fix #2458 - const source = _context.documents.getVirtualFileByUri(document.uri)[1]; - if (source && _context.typescript) { - const casing = await getNameCasing(ts, _context, _context.env.fileNameToUri(source.fileName)); - if (casing.tag === TagNameCasing.Kebab) { - result.items.forEach(item => { - item.filterText = hyphenate(item.filterText ?? item.label); - }); + // fix #2458 + const source = _context.documents.getVirtualFileByUri(document.uri)[1]; + if (source && _context.typescript) { + nameCasingPromises.push(getNameCasing(ts, _context, _context.env.fileNameToUri(source.fileName)).then((casing) => { + if (casing.tag === TagNameCasing.Kebab) { + result.items.forEach(item => { + item.filterText = hyphenate(item.filterText ?? item.label); + }); + } + })); } } } } } + await Promise.all(nameCasingPromises); } return result; },