@@ -411,10 +411,33 @@ class PkgDepResolver {
411411 const peerDepMeta = json . peerDependenciesMeta || { } ;
412412 _ . each ( json . peerDependencies || ( json as Record < string , unknown > ) . peerDepenencies as Record < string , string > , ( semver : string , name : string ) => {
413413 const peerId = `${ name } @${ semver } ` ;
414- const resolved = this . resolvePackage ( {
415- item : { name, semver } as DepItem ,
416- meta : { versions : { } } as PackageMeta
417- } ) ;
414+ const item : DepItem = { name, semver } as DepItem ;
415+
416+ // Check if the package is already resolved and installed (in _data)
417+ // For peer dependencies, we only care about packages that are actually installed,
418+ // not packages that could be resolved from lock files or dist tags
419+ const kpkg = this . _data . getPkg ( item ) as KnownPackage | undefined ;
420+ let resolved : string | false | undefined ;
421+
422+ if ( kpkg && kpkg [ RESOLVE_ORDER ] ) {
423+ // Check if any already-resolved version satisfies the semver range
424+ const satisfies = ( v : string , sv : string ) : boolean => {
425+ return semverUtil . satisfies ( v , sv ) ;
426+ } ;
427+ resolved = _ . find ( kpkg [ RESOLVE_ORDER ] , v => satisfies ( v , semver ) ) ;
428+ }
429+
430+ // Also check getKnownSemver for exact semver matches that were resolved
431+ if ( ! resolved && kpkg ) {
432+ const find = ( rsv : Record < string , string | string [ ] > | undefined ) : string | false | undefined => {
433+ let x : string | string [ ] | undefined = rsv && rsv [ semver ] ;
434+ if ( ! x ) return x ;
435+ if ( Array . isArray ( x ) ) x = x [ 0 ] ;
436+ return x ;
437+ } ;
438+ resolved = find ( kpkg [ LOCK_RSEMVERS ] ) || find ( kpkg [ RSEMVERS ] ) ;
439+ }
440+
418441 if ( ! resolved ) {
419442 // Skip warning if peer dependency is marked as optional in peerDependenciesMeta
420443 const isOptional = peerDepMeta [ name ] && peerDepMeta [ name ] . optional ;
0 commit comments