From 1f6e58d35caa7e7c3fdc5b3292be6a6ac76fa48c Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 11 Jul 2019 15:40:33 -0700 Subject: [PATCH] Style nits --- src/services/codefixes/importFixes.ts | 49 +++++++++++++-------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 66eff9efd79..223c59b3101 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -392,7 +392,8 @@ namespace ts.codefix { // "default" is a keyword and not a legal identifier for the import, so we don't expect it here Debug.assert(symbolName !== InternalSymbolName.Default); - const fixes = arrayFrom(flatMapIterator(getExportInfos(symbolName, getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, checker, program, preferences, host).entries(), ([_, exportInfos]) => + const exportInfos = getExportInfos(symbolName, getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, checker, program, preferences, host); + const fixes = arrayFrom(flatMapIterator(exportInfos.entries(), ([_, exportInfos]) => getFixForImport(exportInfos, symbolName, symbolToken.getStart(sourceFile), program, sourceFile, host, preferences))); return { fixes, symbolName }; } @@ -606,7 +607,7 @@ namespace ts.codefix { redirectTargetsMap); // Paths here are not node_modules, so we don’t care about them; - // returning anyting will trigger a lookup in package.json. + // returning anything will trigger a lookup in package.json. if (!pathIsRelative(specifier) && !isRootedDiskPath(specifier)) { const components = getPathComponents(getPackageNameFromTypesPackageName(specifier)).slice(1); // Scoped packages @@ -672,30 +673,16 @@ namespace ts.codefix { function createLazyPackageJsonDependencyReader(fromFile: SourceFile, host: LanguageServiceHost) { const packageJsonPaths = findPackageJsons(getDirectoryPath(fromFile.fileName), host); - const dependencyIterator = readPackageJsonDependencies(); + const dependencyIterator = readPackageJsonDependencies(host, packageJsonPaths); let seenDeps: Map | undefined; - function *readPackageJsonDependencies() { - type PackageJson = Record | undefined>; - const dependencyKeys = ["dependencies", "devDependencies", "optionalDependencies"] as const; - for (const fileName of packageJsonPaths) { - const content = readJson(fileName, { readFile: host.readFile ? host.readFile.bind(host) : sys.readFile }) as PackageJson; - for (const key of dependencyKeys) { - const dependencyHash = content[key]; - if (!dependencyHash) { - continue; - } - for (const packageName in dependencyHash) { - yield packageName; - } - } - } - } + let usesNodeCoreModules: boolean | undefined; + return { allowsImporting }; function containsDependency(dependency: string) { if ((seenDeps || (seenDeps = createMap())).has(dependency)) { return true; } - let packageName: string; + let packageName: string | void; while (packageName = dependencyIterator.next().value) { seenDeps.set(packageName, true); if (packageName === dependency) { @@ -705,7 +692,6 @@ namespace ts.codefix { return false; } - let usesNodeCoreModules: boolean | undefined; function allowsImporting(moduleSpecifier: string): boolean { if (!packageJsonPaths.length) { return true; @@ -727,12 +713,23 @@ namespace ts.codefix { return containsDependency(moduleSpecifier) || containsDependency(getTypesPackageName(moduleSpecifier)); } + } - return { - packageJsonPaths, - containsDependency, - allowsImporting - }; + function *readPackageJsonDependencies(host: LanguageServiceHost, packageJsonPaths: string[]) { + type PackageJson = Record | undefined>; + const dependencyKeys = ["dependencies", "devDependencies", "optionalDependencies"] as const; + for (const fileName of packageJsonPaths) { + const content = readJson(fileName, { readFile: host.readFile ? host.readFile.bind(host) : sys.readFile }) as PackageJson; + for (const key of dependencyKeys) { + const dependencies = content[key]; + if (!dependencies) { + continue; + } + for (const packageName in dependencies) { + yield packageName; + } + } + } } function consumesNodeCoreModules(sourceFile: SourceFile): boolean {