@@ -4,14 +4,17 @@ import { PackageManager } from '../../interfaces/package_manager';
4
4
import { LanguagePackageManager } from '../language_package_manager' ;
5
5
import { pathJoin } from '../../util/globals' ;
6
6
7
+ type JavascriptPackageManager = 'npm' | 'yarn' | 'pnpm' ;
8
+ type JavascriptDependenciesLockFile = 'package-lock.json' | 'yarn.lock' | 'pnpm-lock.yaml' ;
9
+
7
10
export class Javascript extends LanguagePackageManager implements PackageManager {
8
- packageManager : string = 'npm' ;
9
- locks : { [ key : string ] : string } = {
11
+ packageManager : JavascriptPackageManager = 'npm' ;
12
+ locks : { [ key in JavascriptPackageManager ] : JavascriptDependenciesLockFile } = {
10
13
'npm' : 'package-lock.json' ,
11
14
'yarn' : 'yarn.lock' ,
12
15
'pnpm' : 'pnpm-lock.yaml' ,
13
16
} ;
14
- startsWith : { [ key : string ] : string } = {
17
+ startsWith : { [ key in JavascriptPackageManager ] : string } = {
15
18
'npm' : 'packageName' ,
16
19
'yarn' : 'packageName@' ,
17
20
'pnpm' : '/packageName/' ,
@@ -21,6 +24,10 @@ export class Javascript extends LanguagePackageManager implements PackageManager
21
24
this . packageManager = await this . getPackageManager ( ) ;
22
25
const installedPackages = new Parser ( this . packageManager ) . parse ( await this . lockFileContent ( ) ) ;
23
26
27
+ if ( ! vscode . workspace . getConfiguration ( ) . get ( `package-manager-intellisense.${ this . packageManager } .enable` ) ) {
28
+ return null ;
29
+ }
30
+
24
31
if ( this . packageManager === 'pnpm' ) {
25
32
this . appendVersion ( installedPackages ) ;
26
33
}
@@ -32,18 +39,18 @@ export class Javascript extends LanguagePackageManager implements PackageManager
32
39
return pathJoin ( this . rootPath , this . locks [ this . packageManager ] ) ;
33
40
}
34
41
35
- async getPackageManager ( ) : Promise < string > {
42
+ async getPackageManager ( ) : Promise < JavascriptPackageManager > {
36
43
for ( const lock in this . locks ) {
37
- let lockFile = vscode . Uri . file ( pathJoin ( this . rootPath , this . locks [ lock ] ) ) ;
44
+ let lockFile = vscode . Uri . file ( pathJoin ( this . rootPath , this . locks [ lock as JavascriptPackageManager ] ) ) ;
38
45
39
46
try {
40
47
await vscode . workspace . fs . readFile ( lockFile ) ;
41
48
42
- return lock ;
49
+ return lock as JavascriptPackageManager ;
43
50
} catch ( error ) { }
44
51
}
45
52
46
- return Object . keys ( this . locks ) [ 0 ] ;
53
+ return ( Object . keys ( this . locks ) as JavascriptPackageManager [ ] ) [ 0 ] ;
47
54
}
48
55
49
56
lockPackageStartsWith ( packageName : string ) : string {
0 commit comments