@@ -4,7 +4,10 @@ import fs from 'fs';
4
4
import type { Dir } from 'fs' ;
5
5
import Module from 'module' ;
6
6
import path from 'path' ;
7
- import semver from 'semver' ;
7
+ import Range from 'semver/classes/range' ;
8
+ import SemVer from 'semver/classes/semver' ;
9
+ import semverLt from 'semver/functions/lt' ;
10
+ import semverParse from 'semver/functions/parse' ;
8
11
import { setTimeout as setTimeoutPromise } from 'timers/promises' ;
9
12
10
13
import * as engine from './Engine' ;
@@ -82,9 +85,9 @@ export async function findInstalledVersion(installTarget: string, descriptor: De
82
85
}
83
86
}
84
87
85
- const range = new semver . Range ( descriptor . range ) ;
88
+ const range = new Range ( descriptor . range ) ;
86
89
let bestMatch : string | null = null ;
87
- let maxSV : semver . SemVer | undefined = undefined ;
90
+ let maxSV : SemVer | undefined = undefined ;
88
91
89
92
for await ( const { name} of cacheDirectory ) {
90
93
// Some dot-folders tend to pop inside directories, especially on OSX
@@ -97,7 +100,7 @@ export async function findInstalledVersion(installTarget: string, descriptor: De
97
100
// @ts -expect-error TODO: decipher why this produces an error
98
101
if ( range . test ( name ) && maxSV ?. compare ( name ) !== 1 ) {
99
102
bestMatch = name ;
100
- maxSV = new semver . SemVer ( bestMatch ) ;
103
+ maxSV = new SemVer ( bestMatch ) ;
101
104
}
102
105
}
103
106
@@ -193,7 +196,7 @@ async function download(installTarget: string, url: string, algo: string, binPat
193
196
194
197
export async function installVersion ( installTarget : string , locator : Locator , { spec} : { spec : PackageManagerSpec } ) : Promise < InstallSpec > {
195
198
const locatorIsASupportedPackageManager = isSupportedPackageManagerLocator ( locator ) ;
196
- const locatorReference = locatorIsASupportedPackageManager ? semver . parse ( locator . reference ) ! : parseURLReference ( locator ) ;
199
+ const locatorReference = locatorIsASupportedPackageManager ? semverParse ( locator . reference ) ! : parseURLReference ( locator ) ;
197
200
const { version, build} = locatorReference ;
198
201
199
202
const installFolder = path . join ( installTarget , locator . name , version ) ;
@@ -326,9 +329,9 @@ export async function installVersion(installTarget: string, locator: Locator, {s
326
329
const lastKnownGood = await engine . getLastKnownGood ( ) ;
327
330
const defaultVersion = engine . getLastKnownGoodFromFileContent ( lastKnownGood , locator . name ) ;
328
331
if ( defaultVersion ) {
329
- const currentDefault = semver . parse ( defaultVersion ) ! ;
330
- const downloadedVersion = locatorReference as semver . SemVer ;
331
- if ( currentDefault . major === downloadedVersion . major && semver . lt ( currentDefault , downloadedVersion ) ) {
332
+ const currentDefault = semverParse ( defaultVersion ) ! ;
333
+ const downloadedVersion = locatorReference as SemVer ;
334
+ if ( currentDefault . major === downloadedVersion . major && semverLt ( currentDefault , downloadedVersion ) ) {
332
335
await engine . activatePackageManager ( lastKnownGood , locator ) ;
333
336
}
334
337
}
@@ -404,7 +407,7 @@ export async function runVersion(locator: Locator, installSpec: InstallSpec & {s
404
407
// Node.js segfaults when using npm@>=9.7.0 and v8-compile-cache
405
408
// $ docker run -it node:20.3.0-slim corepack npm@9.7.1 --version
406
409
// [SIGSEGV]
407
- if ( locator . name !== `npm` || semver . lt ( locator . reference , `9.7.0` ) )
410
+ if ( locator . name !== `npm` || semverLt ( locator . reference , `9.7.0` ) )
408
411
// @ts -expect-error - No types
409
412
await import ( `v8-compile-cache` ) ;
410
413
0 commit comments