@@ -392,7 +392,8 @@ namespace ts.codefix {
392
392
// "default" is a keyword and not a legal identifier for the import, so we don't expect it here
393
393
Debug . assert ( symbolName !== InternalSymbolName . Default ) ;
394
394
395
- const fixes = arrayFrom ( flatMapIterator ( getExportInfos ( symbolName , getMeaningFromLocation ( symbolToken ) , cancellationToken , sourceFile , checker , program , preferences , host ) . entries ( ) , ( [ _ , exportInfos ] ) =>
395
+ const exportInfos = getExportInfos ( symbolName , getMeaningFromLocation ( symbolToken ) , cancellationToken , sourceFile , checker , program , preferences , host ) ;
396
+ const fixes = arrayFrom ( flatMapIterator ( exportInfos . entries ( ) , ( [ _ , exportInfos ] ) =>
396
397
getFixForImport ( exportInfos , symbolName , symbolToken . getStart ( sourceFile ) , program , sourceFile , host , preferences ) ) ) ;
397
398
return { fixes, symbolName } ;
398
399
}
@@ -603,7 +604,7 @@ namespace ts.codefix {
603
604
redirectTargetsMap ) ;
604
605
605
606
// Paths here are not node_modules, so we don’t care about them;
606
- // returning anyting will trigger a lookup in package.json.
607
+ // returning anything will trigger a lookup in package.json.
607
608
if ( ! pathIsRelative ( specifier ) && ! isRootedDiskPath ( specifier ) ) {
608
609
const components = getPathComponents ( getPackageNameFromTypesPackageName ( specifier ) ) . slice ( 1 ) ;
609
610
// Scoped packages
@@ -669,30 +670,16 @@ namespace ts.codefix {
669
670
670
671
function createLazyPackageJsonDependencyReader ( fromFile : SourceFile , host : LanguageServiceHost ) {
671
672
const packageJsonPaths = findPackageJsons ( getDirectoryPath ( fromFile . fileName ) , host ) ;
672
- const dependencyIterator = readPackageJsonDependencies ( ) ;
673
+ const dependencyIterator = readPackageJsonDependencies ( host , packageJsonPaths ) ;
673
674
let seenDeps : Map < true > | undefined ;
674
- function * readPackageJsonDependencies ( ) {
675
- type PackageJson = Record < typeof dependencyKeys [ number ] , Record < string , string > | undefined > ;
676
- const dependencyKeys = [ "dependencies" , "devDependencies" , "optionalDependencies" ] as const ;
677
- for ( const fileName of packageJsonPaths ) {
678
- const content = readJson ( fileName , { readFile : host . readFile ? host . readFile . bind ( host ) : sys . readFile } ) as PackageJson ;
679
- for ( const key of dependencyKeys ) {
680
- const dependencyHash = content [ key ] ;
681
- if ( ! dependencyHash ) {
682
- continue ;
683
- }
684
- for ( const packageName in dependencyHash ) {
685
- yield packageName ;
686
- }
687
- }
688
- }
689
- }
675
+ let usesNodeCoreModules : boolean | undefined ;
676
+ return { allowsImporting } ;
690
677
691
678
function containsDependency ( dependency : string ) {
692
679
if ( ( seenDeps || ( seenDeps = createMap ( ) ) ) . has ( dependency ) ) {
693
680
return true ;
694
681
}
695
- let packageName : string ;
682
+ let packageName : string | void ;
696
683
while ( packageName = dependencyIterator . next ( ) . value ) {
697
684
seenDeps . set ( packageName , true ) ;
698
685
if ( packageName === dependency ) {
@@ -702,7 +689,6 @@ namespace ts.codefix {
702
689
return false ;
703
690
}
704
691
705
- let usesNodeCoreModules : boolean | undefined ;
706
692
function allowsImporting ( moduleSpecifier : string ) : boolean {
707
693
if ( ! packageJsonPaths . length ) {
708
694
return true ;
@@ -724,12 +710,23 @@ namespace ts.codefix {
724
710
return containsDependency ( moduleSpecifier )
725
711
|| containsDependency ( getTypesPackageName ( moduleSpecifier ) ) ;
726
712
}
713
+ }
727
714
728
- return {
729
- packageJsonPaths,
730
- containsDependency,
731
- allowsImporting
732
- } ;
715
+ function * readPackageJsonDependencies ( host : LanguageServiceHost , packageJsonPaths : string [ ] ) {
716
+ type PackageJson = Record < typeof dependencyKeys [ number ] , Record < string , string > | undefined > ;
717
+ const dependencyKeys = [ "dependencies" , "devDependencies" , "optionalDependencies" ] as const ;
718
+ for ( const fileName of packageJsonPaths ) {
719
+ const content = readJson ( fileName , { readFile : host . readFile ? host . readFile . bind ( host ) : sys . readFile } ) as PackageJson ;
720
+ for ( const key of dependencyKeys ) {
721
+ const dependencies = content [ key ] ;
722
+ if ( ! dependencies ) {
723
+ continue ;
724
+ }
725
+ for ( const packageName in dependencies ) {
726
+ yield packageName ;
727
+ }
728
+ }
729
+ }
733
730
}
734
731
735
732
function consumesNodeCoreModules ( sourceFile : SourceFile ) : boolean {
0 commit comments