@@ -15,7 +15,11 @@ import {
1515 createContextSerializer ,
1616 extractNameAndVersionFromKey
1717} from './helpers' ;
18- import { type PnpmMajorVersion , type IPnpmVersionHelpers , getPnpmVersionHelpersAsync } from './pnpm' ;
18+ import {
19+ type PnpmMajorVersion ,
20+ type IPnpmVersionHelpers ,
21+ getPnpmVersionHelpersAsync
22+ } from './pnpm/pnpmVersionHelpers' ;
1923import type { IResolverContext } from './types' ;
2024
2125/**
@@ -112,7 +116,7 @@ function extractBundledDependencies(
112116}
113117
114118// Re-export for downstream consumers
115- export type { PnpmMajorVersion , IPnpmVersionHelpers } from './pnpm' ;
119+ export type { PnpmMajorVersion , IPnpmVersionHelpers } from './pnpm/pnpmVersionHelpers ' ;
116120
117121/**
118122 * Options for computing the resolver cache from a lockfile.
@@ -157,13 +161,15 @@ export interface IComputeResolverCacheFromLockfileOptions {
157161 ) => Promise < void > ;
158162}
159163
164+ const BACKSLASH_REGEX : RegExp = / \\ / g;
165+
160166/**
161167 * Copied from `@rushstack/node-core-library/src/Path.ts` to avoid expensive dependency
162168 * @param path - Path using backslashes as path separators
163169 * @returns The same string using forward slashes as path separators
164170 */
165171function convertToSlashes ( path : string ) : string {
166- return path . replace ( / \\ / g , '/' ) ;
172+ return path . replace ( BACKSLASH_REGEX , '/' ) ;
167173}
168174
169175/**
@@ -183,12 +189,12 @@ export async function computeResolverCacheFromLockfileAsync(
183189 const contexts : Map < string , IResolverContext > = new Map ( ) ;
184190 const missingOptionalDependencies : Set < string > = new Set ( ) ;
185191
186- const pnpmVersion : PnpmMajorVersion = params . pnpmVersion ;
192+ const helpers : IPnpmVersionHelpers = await getPnpmVersionHelpersAsync ( params . pnpmVersion ) ;
187193
188- const helpers : IPnpmVersionHelpers = await getPnpmVersionHelpersAsync ( pnpmVersion ) ;
194+ const { packages } = lockfile ;
189195
190196 // Enumerate external dependencies first, to simplify looping over them for store data
191- for ( const [ key , pack ] of lockfile . packages ) {
197+ for ( const [ key , pack ] of packages ) {
192198 let name : string | undefined = pack . name ;
193199 const descriptionFileRoot : string = getDescriptionFileRootFromKey (
194200 workspaceRoot ,
@@ -208,9 +214,7 @@ export async function computeResolverCacheFromLockfileAsync(
208214 // Extract name and version from the key if not already provided
209215 const parsed : { name : string ; version : string } | undefined = extractNameAndVersionFromKey ( key ) ;
210216 if ( parsed ) {
211- if ( ! name ) {
212- name = parsed . name ;
213- }
217+ name ||= parsed . name ;
214218 }
215219
216220 if ( ! name ) {
@@ -231,10 +235,10 @@ export async function computeResolverCacheFromLockfileAsync(
231235 contexts . set ( descriptionFileRoot , context ) ;
232236
233237 if ( pack . dependencies ) {
234- resolveDependencies ( workspaceRoot , pack . dependencies , context , helpers , lockfile . packages ) ;
238+ resolveDependencies ( workspaceRoot , pack . dependencies , context , helpers , packages ) ;
235239 }
236240 if ( pack . optionalDependencies ) {
237- resolveDependencies ( workspaceRoot , pack . optionalDependencies , context , helpers , lockfile . packages ) ;
241+ resolveDependencies ( workspaceRoot , pack . optionalDependencies , context , helpers , packages ) ;
238242 }
239243 }
240244
@@ -275,13 +279,13 @@ export async function computeResolverCacheFromLockfileAsync(
275279 contexts . set ( descriptionFileRoot , context ) ;
276280
277281 if ( importer . dependencies ) {
278- resolveDependencies ( workspaceRoot , importer . dependencies , context , helpers , lockfile . packages ) ;
282+ resolveDependencies ( workspaceRoot , importer . dependencies , context , helpers , packages ) ;
279283 }
280284 if ( importer . devDependencies ) {
281- resolveDependencies ( workspaceRoot , importer . devDependencies , context , helpers , lockfile . packages ) ;
285+ resolveDependencies ( workspaceRoot , importer . devDependencies , context , helpers , packages ) ;
282286 }
283287 if ( importer . optionalDependencies ) {
284- resolveDependencies ( workspaceRoot , importer . optionalDependencies , context , helpers , lockfile . packages ) ;
288+ resolveDependencies ( workspaceRoot , importer . optionalDependencies , context , helpers , packages ) ;
285289 }
286290 }
287291
0 commit comments