Skip to content

Commit db09a59

Browse files
committed
Unmangle package names from typings during completion
1 parent fa758cc commit db09a59

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

src/compiler/moduleNameResolver.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,13 +1097,18 @@ namespace ts {
10971097
export function getPackageNameFromAtTypesDirectory(mangledName: string): string {
10981098
const withoutAtTypePrefix = removePrefix(mangledName, "@types/");
10991099
if (withoutAtTypePrefix !== mangledName) {
1100-
return stringContains(withoutAtTypePrefix, mangledScopedPackageSeparator) ?
1101-
"@" + withoutAtTypePrefix.replace(mangledScopedPackageSeparator, ts.directorySeparator) :
1102-
withoutAtTypePrefix;
1100+
return getPackageNameFromAtTypesDirectoryWithoutPrefix(withoutAtTypePrefix);
11031101
}
11041102
return mangledName;
11051103
}
11061104

1105+
/* @internal */
1106+
export function getPackageNameFromAtTypesDirectoryWithoutPrefix(withoutAtTypePrefix: string): string {
1107+
return stringContains(withoutAtTypePrefix, mangledScopedPackageSeparator) ?
1108+
"@" + withoutAtTypePrefix.replace(mangledScopedPackageSeparator, ts.directorySeparator) :
1109+
withoutAtTypePrefix;
1110+
}
1111+
11071112
function tryFindNonRelativeModuleNameInCache(cache: PerModuleNameCache | undefined, moduleName: string, containingDirectory: string, traceEnabled: boolean, host: ModuleResolutionHost): SearchResult<Resolved> {
11081113
const result = cache && cache.get(containingDirectory);
11091114
if (result) {

src/services/pathCompletions.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,8 @@ namespace ts.Completions.PathCompletions {
313313
function getCompletionEntriesFromTypings(host: LanguageServiceHost, options: CompilerOptions, scriptPath: string, span: TextSpan, result: CompletionEntry[] = []): CompletionEntry[] {
314314
// Check for typings specified in compiler options
315315
if (options.types) {
316-
for (const moduleName of options.types) {
316+
for (const typesName of options.types) {
317+
const moduleName = getPackageNameFromAtTypesDirectoryWithoutPrefix(typesName);
317318
result.push(createCompletionEntryForModule(moduleName, ScriptElementKind.externalModuleName, span));
318319
}
319320
}
@@ -346,7 +347,9 @@ namespace ts.Completions.PathCompletions {
346347
if (directories) {
347348
for (let typeDirectory of directories) {
348349
typeDirectory = normalizePath(typeDirectory);
349-
result.push(createCompletionEntryForModule(getBaseFileName(typeDirectory), ScriptElementKind.externalModuleName, span));
350+
const directoryName = getBaseFileName(typeDirectory);
351+
const moduleName = getPackageNameFromAtTypesDirectoryWithoutPrefix(directoryName);
352+
result.push(createCompletionEntryForModule(moduleName, ScriptElementKind.externalModuleName, span));
350353
}
351354
}
352355
}

0 commit comments

Comments
 (0)