@@ -202,59 +202,71 @@ function writeDependencyVersion(
202202export function fixMismatchingVersions (
203203 packages : Package [ ] ,
204204 mismatchingVersions : MismatchingDependencyVersions
205- ) : MismatchingDependencyVersions {
206- // Return any mismatching versions that are still present after attempting fixes.
207- return mismatchingVersions
208- . map ( ( mismatchingVersion ) => {
209- const versions = mismatchingVersion . versions . map (
210- ( object ) => object . version
211- ) ;
212- let sortedVersions ;
213- try {
214- sortedVersions = versions . sort ( compareRanges ) ;
215- } catch {
216- // Unable to sort so skip this dependency (return it to indicate it was not fixed).
217- return mismatchingVersion ;
218- }
219- const fixedVersion = sortedVersions [ sortedVersions . length - 1 ] ; // Highest version will be sorted to end of list.
205+ ) : {
206+ fixed : MismatchingDependencyVersions ;
207+ notFixed : MismatchingDependencyVersions ;
208+ } {
209+ const fixed = [ ] ;
210+ const notFixed = [ ] ;
211+ for ( const mismatchingVersion of mismatchingVersions ) {
212+ const versions = mismatchingVersion . versions . map (
213+ ( object ) => object . version
214+ ) ;
215+ let sortedVersions ;
216+ try {
217+ sortedVersions = versions . sort ( compareRanges ) ;
218+ } catch {
219+ // Unable to sort so skip this dependency.
220+ notFixed . push ( mismatchingVersion ) ;
221+ continue ;
222+ }
220223
221- for ( const package_ of packages ) {
222- if (
223- package_ . packageJson . devDependencies &&
224- package_ . packageJson . devDependencies [ mismatchingVersion . dependency ] &&
225- package_ . packageJson . devDependencies [
226- mismatchingVersion . dependency
227- ] !== fixedVersion
228- ) {
229- writeDependencyVersion (
230- package_ . pathPackageJson ,
231- package_ . packageJsonEndsInNewline ,
232- false ,
233- mismatchingVersion . dependency ,
234- fixedVersion
235- ) ;
236- }
224+ const fixedVersion = sortedVersions [ sortedVersions . length - 1 ] ; // Highest version will be sorted to end of list.
237225
238- if (
239- package_ . packageJson . dependencies &&
240- package_ . packageJson . dependencies [ mismatchingVersion . dependency ] &&
241- package_ . packageJson . dependencies [ mismatchingVersion . dependency ] !==
242- fixedVersion
243- ) {
244- writeDependencyVersion (
245- package_ . pathPackageJson ,
246- package_ . packageJsonEndsInNewline ,
247- true ,
248- mismatchingVersion . dependency ,
249- fixedVersion
250- ) ;
251- }
226+ let isFixed = false ;
227+ for ( const package_ of packages ) {
228+ if (
229+ package_ . packageJson . devDependencies &&
230+ package_ . packageJson . devDependencies [ mismatchingVersion . dependency ] &&
231+ package_ . packageJson . devDependencies [ mismatchingVersion . dependency ] !==
232+ fixedVersion
233+ ) {
234+ writeDependencyVersion (
235+ package_ . pathPackageJson ,
236+ package_ . packageJsonEndsInNewline ,
237+ false ,
238+ mismatchingVersion . dependency ,
239+ fixedVersion
240+ ) ;
241+ isFixed = true ;
252242 }
253243
254- // Fixed successfully.
255- return undefined ;
256- } )
257- . filter ( ( item ) => item !== undefined ) as MismatchingDependencyVersions ;
244+ if (
245+ package_ . packageJson . dependencies &&
246+ package_ . packageJson . dependencies [ mismatchingVersion . dependency ] &&
247+ package_ . packageJson . dependencies [ mismatchingVersion . dependency ] !==
248+ fixedVersion
249+ ) {
250+ writeDependencyVersion (
251+ package_ . pathPackageJson ,
252+ package_ . packageJsonEndsInNewline ,
253+ true ,
254+ mismatchingVersion . dependency ,
255+ fixedVersion
256+ ) ;
257+ isFixed = true ;
258+ }
259+ }
260+
261+ if ( isFixed ) {
262+ fixed . push ( mismatchingVersion ) ;
263+ }
264+ }
265+
266+ return {
267+ fixed,
268+ notFixed,
269+ } ;
258270}
259271
260272export function compareRanges ( a : string , b : string ) : 0 | - 1 | 1 {
0 commit comments