File tree 4 files changed +42
-2
lines changed
package_manager/package_managers
4 files changed +42
-2
lines changed Original file line number Diff line number Diff line change 96
96
"default" : true ,
97
97
"description" : " Enable pnpm package manager."
98
98
},
99
+ "package-manager-intellisense.bun.enable" : {
100
+ "type" : " boolean" ,
101
+ "default" : true ,
102
+ "description" : " Enable bun package manager."
103
+ },
99
104
"package-manager-intellisense.composer.enable" : {
100
105
"type" : " boolean" ,
101
106
"default" : true ,
Original file line number Diff line number Diff line change @@ -4,24 +4,27 @@ 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' ;
7
+ type JavascriptPackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' ;
8
+ type JavascriptDependenciesLockFile = 'package-lock.json' | 'yarn.lock' | 'pnpm-lock.yaml' | 'bun.lock' ;
9
9
10
10
export class Javascript extends LanguagePackageManager implements PackageManager {
11
11
packageManager : JavascriptPackageManager = 'npm' ;
12
12
locks : { [ key in JavascriptPackageManager ] : JavascriptDependenciesLockFile } = {
13
13
'npm' : 'package-lock.json' ,
14
14
'yarn' : 'yarn.lock' ,
15
15
'pnpm' : 'pnpm-lock.yaml' ,
16
+ 'bun' : 'bun.lock' ,
16
17
} ;
17
18
startsWith : { [ key in JavascriptPackageManager ] : string } = {
18
19
'npm' : 'packageName' ,
19
20
'yarn' : 'packageName@' ,
20
21
'pnpm' : '/packageName/' ,
22
+ 'bun' : 'packageName' ,
21
23
} ;
22
24
23
25
async getInstalled ( packageName : string ) : Promise < any > {
24
26
this . packageManager = await this . getPackageManager ( ) ;
27
+
25
28
const installedPackages = new Parser ( this . packageManager ) . parse ( await this . lockFileContent ( ) ) ;
26
29
27
30
if ( ! vscode . workspace . getConfiguration ( ) . get ( `package-manager-intellisense.${ this . packageManager } .enable` ) ) {
Original file line number Diff line number Diff line change
1
+ import { LockParser } from "../interfaces/lock_parser" ;
2
+
3
+ export class BunLock implements LockParser {
4
+ private content : { [ key : string ] : any } ;
5
+
6
+ constructor ( content : string ) {
7
+ content = this . removeTrailingCommas ( content ) ;
8
+ this . content = JSON . parse ( content ) ;
9
+ this . appendVersions ( ) ;
10
+
11
+ return this ;
12
+ }
13
+
14
+ dependencies ( ) : { [ key : string ] : any } {
15
+ return this . content . packages ;
16
+ }
17
+
18
+ removeTrailingCommas ( content : string ) : string {
19
+ const regex = / \, (? ! \s * ?[ \{ \[ \" \' \w ] ) / g;
20
+
21
+ return content . replace ( regex , '' ) ;
22
+ }
23
+
24
+ appendVersions ( ) : void {
25
+ Object . keys ( this . content . packages ) . map ( pkg => {
26
+ const version = this . content . packages [ pkg ] [ 0 ] . split ( '@' ) . at ( - 1 ) ;
27
+ this . content . packages [ pkg ] [ 'version' ] = version ;
28
+ } ) ;
29
+ }
30
+ }
Original file line number Diff line number Diff line change @@ -3,12 +3,14 @@ import { ComposerLock } from './composerLock';
3
3
import { PnpmLock } from './pnpmLock' ;
4
4
import { GemfileLock } from './gemfileLock' ;
5
5
import { NpmLock } from './npmLock' ;
6
+ import { BunLock } from './BunLock' ;
6
7
7
8
export class Parser {
8
9
private readonly parsers = {
9
10
"npm" : NpmLock ,
10
11
"yarn" : YarnLock ,
11
12
"pnpm" : PnpmLock ,
13
+ 'bun' : BunLock ,
12
14
"composer" : ComposerLock ,
13
15
"rubygems" : GemfileLock ,
14
16
} ;
You can’t perform that action at this time.
0 commit comments