@@ -109,6 +109,7 @@ type NodeClass = Omit<
109
109
new ( ...args : any ) : NodeClass
110
110
addEdgeIn ( edge : SafeEdge ) : void
111
111
addEdgeOut ( edge : SafeEdge ) : void
112
+ canDedupe ( preferDedupe : boolean ) : boolean
112
113
canReplace ( node : NodeClass , ignorePeers ?: string [ ] ) : boolean
113
114
canReplaceWith ( node : NodeClass , ignorePeers ?: string [ ] ) : boolean
114
115
deleteEdgeIn ( edge : SafeEdge ) : void
@@ -329,6 +330,15 @@ async function* batchScan(
329
330
}
330
331
}
331
332
333
+ // Patch adding doOverrideSetsConflict is based on
334
+ // https://github.com/npm/cli/pull/7025.
335
+ function doOverrideSetsConflict (
336
+ first : OverrideSetClass | undefined ,
337
+ second : OverrideSetClass | undefined
338
+ ) {
339
+ return findSpecificOverrideSet ( first , second ) === undefined
340
+ }
341
+
332
342
function findSocketYmlSync ( ) {
333
343
let prevDir = null
334
344
let dir = process . cwd ( )
@@ -654,7 +664,7 @@ class SafeEdge extends Edge {
654
664
else if (
655
665
this . overrides &&
656
666
this . #safeTo. edgesOut . size &&
657
- ! findSpecificOverrideSet ( this . overrides , this . #safeTo. overrides )
667
+ doOverrideSetsConflict ( this . overrides , this . #safeTo. overrides )
658
668
) {
659
669
// Any inconsistency between the edge's override set and the target's
660
670
// override set is potentially problematic. But we only say the edge is
@@ -873,7 +883,7 @@ class SafeNode extends Node {
873
883
// Return true if it's safe to remove this node, because anything that is
874
884
// depending on it would be fine with the thing that they would resolve to if
875
885
// it was removed, or nothing is depending on it in the first place.
876
- canDedupe ( preferDedupe = false ) {
886
+ override canDedupe ( preferDedupe = false ) {
877
887
// Not allowed to mess with shrinkwraps or bundles.
878
888
if ( this . inDepBundle || this . inShrinkwrap ) {
879
889
return false
@@ -1107,7 +1117,7 @@ class SafeNode extends Node {
1107
1117
}
1108
1118
// This is an error condition. We can only get here if the new override set
1109
1119
// is in conflict with the existing.
1110
- log ! . silly ( ` Conflicting override requirements for node ${ this . name } ` , this )
1120
+ log ! . silly ( ' Conflicting override sets' , this . name )
1111
1121
return false
1112
1122
}
1113
1123
0 commit comments