Skip to content

Commit 10d3a93

Browse files
committed
added userpref gating for package.json auto imports
1 parent 3d33f0e commit 10d3a93

File tree

6 files changed

+44
-3
lines changed

6 files changed

+44
-3
lines changed

internal/ls/autoimports.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,9 @@ func (l *LanguageService) getNewImportFixes(
10101010
) []*ImportFix /* FixAddNewImport | FixAddJsdocTypeImport */ {
10111011
isJs := tspath.HasJSFileExtension(sourceFile.FileName())
10121012
compilerOptions := l.GetProgram().Options()
1013-
// !!! packagejsonAutoimportProvider
1013+
// !!! if preferences.IncludePackageJsonAutoImports != "off" {
1014+
// !!! packagejsonAutoimportProvider
1015+
// !!! }
10141016
// getChecker := createGetChecker(program, host)// memoized typechecker based on `isFromPackageJson` bool
10151017

10161018
getModuleSpecifiers := func(moduleSymbol *ast.Symbol, checker *checker.Checker) ([]string, modulespecifiers.ResultKind) {
@@ -1345,6 +1347,10 @@ func forEachExternalModuleToImportFrom(
13451347
},
13461348
)
13471349

1350+
// if preferences.IncludePackageJsonAutoImports == "off" {
1351+
// return;
1352+
// }
1353+
13481354
// !!! autoImportProvider
13491355
// if autoImportProvider := useAutoImportProvider && l.getPackageJsonAutoImportProvider(); autoImportProvider != nil {
13501356
// // start := timestamp();

internal/ls/completions.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,9 @@ func (l *LanguageService) getCompletionData(
11871187
isValidTypeOnlyUseSite := ast.IsValidTypeOnlyAliasUseSite(location)
11881188

11891189
// !!! moduleSpecifierCache := host.getModuleSpecifierCache();
1190-
// !!! packageJsonAutoImportProvider := host.getPackageJsonAutoImportProvider();
1190+
// !!! if preferences.includePackageJsonAutoImports != "off" {
1191+
// !!! packageJsonAutoImportProvider := host.getPackageJsonAutoImportProvider();
1192+
// !!! }
11911193
addSymbolToList := func(info []*SymbolExportInfo, symbolName string, isFromAmbientModule bool, exportMapKey ExportInfoMapKey) []*SymbolExportInfo {
11921194
// Do a relatively cheap check to bail early if all re-exports are non-importable
11931195
// due to file location or package.json dependency filtering. For non-node16+

internal/ls/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type UserPreferences struct {
5151

5252
ImportModuleSpecifierPreference modulespecifiers.ImportModuleSpecifierPreference
5353
ImportModuleSpecifierEndingPreference modulespecifiers.ImportModuleSpecifierEndingPreference
54+
IncludePackageJsonAutoImports modulespecifiers.IncludePackageJsonAutoImports
5455
PreferTypeOnlyAutoImports *bool
5556
AutoImportSpecifierExcludeRegexes []string
5657
AutoImportFileExcludePatterns []string
@@ -62,6 +63,7 @@ func (p *UserPreferences) ModuleSpecifierPreferences() modulespecifiers.UserPref
6263
return modulespecifiers.UserPreferences{
6364
ImportModuleSpecifierPreference: p.ImportModuleSpecifierPreference,
6465
ImportModuleSpecifierEndingPreference: p.ImportModuleSpecifierEndingPreference,
66+
IncludePackageJsonAutoImports: p.IncludePackageJsonAutoImports,
6567
AutoImportSpecifierExcludeRegexes: p.AutoImportSpecifierExcludeRegexes,
6668
}
6769
}

internal/modulespecifiers/preferences.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ func getPreferredEnding(
141141
type ModuleSpecifierPreferences struct {
142142
relativePreference RelativePreferenceKind
143143
getAllowedEndingsInPreferredOrder func(syntaxImpliedNodeFormat core.ResolutionMode) []ModuleSpecifierEnding
144+
packageJsonAutoImports PackageJsonAutoImports
144145
excludeRegexes []string
145146
}
146147

@@ -170,6 +171,17 @@ func getModuleSpecifierPreferences(
170171
// all others are shortest
171172
}
172173
}
174+
175+
var packageJsonAutoImports PackageJsonAutoImports
176+
switch prefs.IncludePackageJsonAutoImports {
177+
case "on":
178+
packageJsonAutoImports = PackageJsonAutoImportsOn
179+
case "off":
180+
packageJsonAutoImports = PackageJsonAutoImportsOff
181+
default:
182+
packageJsonAutoImports = PackageJsonAutoImportsAuto
183+
}
184+
173185
filePreferredEnding := getPreferredEnding(
174186
prefs,
175187
host,
@@ -226,6 +238,7 @@ func getModuleSpecifierPreferences(
226238
}
227239

228240
return ModuleSpecifierPreferences{
241+
packageJsonAutoImports: packageJsonAutoImports,
229242
excludeRegexes: excludes,
230243
relativePreference: relativePreference,
231244
getAllowedEndingsInPreferredOrder: getAllowedEndingsInPreferredOrder,

internal/modulespecifiers/specifiers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ func getLocalModuleSpecifier(
493493
}
494494

495495
var fromPackageJsonImports string
496-
if !pathsOnly {
496+
if !pathsOnly && preferences.packageJsonAutoImports != PackageJsonAutoImportsOff {
497497
fromPackageJsonImports = tryGetModuleNameFromPackageJsonImports(
498498
moduleFileName,
499499
sourceDirectory,

internal/modulespecifiers/types.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,19 @@ const (
8585
ImportModuleSpecifierEndingPreferenceJs ImportModuleSpecifierEndingPreference = "js"
8686
)
8787

88+
type IncludePackageJsonAutoImports string
89+
90+
const (
91+
IncludePackageJsonAutoImportsNone IncludePackageJsonAutoImports = ""
92+
IncludePackageJsonAutoImportsAuto IncludePackageJsonAutoImports = "auto"
93+
IncludePackageJsonAutoImportsOn IncludePackageJsonAutoImports = "on"
94+
IncludePackageJsonAutoImportsOff IncludePackageJsonAutoImports = "off"
95+
)
96+
8897
type UserPreferences struct {
8998
ImportModuleSpecifierPreference ImportModuleSpecifierPreference
9099
ImportModuleSpecifierEndingPreference ImportModuleSpecifierEndingPreference
100+
IncludePackageJsonAutoImports IncludePackageJsonAutoImports
91101
AutoImportSpecifierExcludeRegexes []string
92102
}
93103

@@ -113,6 +123,14 @@ const (
113123
ModuleSpecifierEndingTsExtension
114124
)
115125

126+
type PackageJsonAutoImports uint8
127+
128+
const (
129+
PackageJsonAutoImportsAuto PackageJsonAutoImports = iota
130+
PackageJsonAutoImportsOn
131+
PackageJsonAutoImportsOff
132+
)
133+
116134
type MatchingMode uint8
117135

118136
const (

0 commit comments

Comments
 (0)