Skip to content

Commit f92cdad

Browse files
committed
feat: sort issuePackagesMap and duplicatedDeps of customErrorMessage option
1 parent fc84bca commit f92cdad

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/index.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
6367
export 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

Comments
 (0)