@@ -31,7 +31,7 @@ export interface Options {
3131 whitelist ?: Record < string , string [ ] > ;
3232 customErrorMessage ?: (
3333 issuePackagesMap : Map < string , string [ ] > ,
34- duplicatedDeps : Record < string , string [ ] > ,
34+ duplicatedDeps : Map < string , string [ ] > ,
3535 ) => string ;
3636 logLevel ?: 'debug' | 'error' ;
3737}
@@ -60,6 +60,10 @@ function colorizeSize(kb: number) {
6060 return `(${ colorFunc ( `${ kb . toFixed ( 3 ) } kb` ) } )` ;
6161}
6262
63+ function sortVersions ( versions : string [ ] ) {
64+ return versions . sort ( ( a , b ) => ( gt ( a , b ) ? 1 : - 1 ) ) ;
65+ }
66+
6367export default createUnplugin < Options | undefined > ( ( options ) => {
6468 const name = 'unplugin-detect-duplicated-deps' ;
6569
@@ -170,10 +174,9 @@ export default createUnplugin<Options | undefined>((options) => {
170174
171175 const promises = duplicatedPackages . map ( async ( duplicatedPackage ) => {
172176 const warningMessagesOfPackage : string [ ] = [ ] ;
173- const sortedVersions = [ ...packageToVersionsMap . get ( duplicatedPackage ) ! . keys ( ) ] . sort (
174- ( a , b ) => ( gt ( a , b ) ? 1 : - 1 ) ,
175- ) ;
176-
177+ const sortedVersions = sortVersions ( [
178+ ...packageToVersionsMap . get ( duplicatedPackage ) ! . keys ( ) ,
179+ ] ) ;
177180 let longestVersionLength = Number . NEGATIVE_INFINITY ;
178181 sortedVersions . forEach ( ( v ) => {
179182 if ( v . length > longestVersionLength ) {
@@ -219,13 +222,11 @@ export default createUnplugin<Options | undefined>((options) => {
219222
220223 if ( throwErrorWhenDuplicated ) {
221224 const issuePackagesMap = new Map < string , string [ ] > ( ) ;
222- const duplicatedDeps : Record < string , string [ ] > = { } ;
225+ const duplicatedPackagesMap = new Map < string , string [ ] > ( ) ;
223226 for ( const [ packageName , versionsMap ] of packageToVersionsMap . entries ( ) ) {
224227 if ( versionsMap . size < 2 ) continue ;
225228
226- duplicatedDeps [ packageName ] = [ ...versionsMap . keys ( ) ] . sort ( ( a , b ) =>
227- gt ( a , b ) ? 1 : - 1 ,
228- ) ;
229+ duplicatedPackagesMap . set ( packageName , sortVersions ( [ ...versionsMap . keys ( ) ] ) ) ;
229230 for ( const version of versionsMap . keys ( ) ) {
230231 const pass =
231232 packageName in whiteList && whiteList [ packageName ] . includes ( version ) ;
@@ -235,6 +236,10 @@ export default createUnplugin<Options | undefined>((options) => {
235236 issuePackagesMap . set ( packageName , newIssueVersions ) ;
236237 }
237238 }
239+
240+ if ( issuePackagesMap . has ( packageName ) ) {
241+ sortVersions ( issuePackagesMap . get ( packageName ) ! ) ;
242+ }
238243 }
239244 const duplicatedDepsList = [ ...issuePackagesMap . entries ( ) ]
240245 . map ( ( [ packageName , _versions ] ) => {
@@ -246,7 +251,7 @@ export default createUnplugin<Options | undefined>((options) => {
246251 if ( issuePackagesMap . size > 0 ) {
247252 throw new Error (
248253 customErrorMessage
249- ? customErrorMessage ( issuePackagesMap , duplicatedDeps )
254+ ? customErrorMessage ( issuePackagesMap , duplicatedPackagesMap )
250255 : `You can add following duplicated deps to whitelist option to suppress this error:\n${ duplicatedDepsList } ` ,
251256 ) ;
252257 }
0 commit comments