From 5ad33deb6aaf564e6b8a666dd67334881994dbb0 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 5 Aug 2022 15:48:47 +0100 Subject: [PATCH 1/3] feat: sort aliases to ensure priority is given to more specific aliases --- src/utils/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 0d1c07d78b..fb2e78663a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -132,7 +132,12 @@ export function readPackageJson ( } } -export function resolveAliases (aliases: Record) { +export function resolveAliases (_aliases: Record) { + // Sort aliases from specific to general (ie. fs/promises before fs) + const aliases = Object.fromEntries(Object.entries(_aliases).sort(([a], [b]) => { + return b.split('/').length - a.split('/').length + })) + // Resolve alias values in relation to each other for (const key in aliases) { for (const alias in aliases) { if (!['~', '@', '#'].includes(alias[0])) { continue } From 75938e8b736de619c87ddc86280d90e820c35b08 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 5 Aug 2022 16:34:51 +0100 Subject: [PATCH 2/3] fix: include length of last segment in calculation --- src/utils/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index fb2e78663a..63697025ee 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -134,9 +134,9 @@ export function readPackageJson ( export function resolveAliases (_aliases: Record) { // Sort aliases from specific to general (ie. fs/promises before fs) - const aliases = Object.fromEntries(Object.entries(_aliases).sort(([a], [b]) => { - return b.split('/').length - a.split('/').length - })) + const aliases = Object.fromEntries(Object.entries(_aliases).sort(([a], [b]) => + scoreAlias(b) - scoreAlias(a) + )) // Resolve alias values in relation to each other for (const key in aliases) { for (const alias in aliases) { @@ -150,3 +150,8 @@ export function resolveAliases (_aliases: Record) { } return aliases } + +const scoreAlias = (alias: string) => { + const segments = alias.split('/') + return segments.length + (segments[segments.length - 1].length / 1000) +} From 1be0b125b9c7c3547b1d9266137819a5dc6b8fd8 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 5 Aug 2022 16:39:55 +0100 Subject: [PATCH 3/3] perf: simplify! --- src/utils/index.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 63697025ee..1ba749e6e5 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -135,7 +135,7 @@ export function readPackageJson ( export function resolveAliases (_aliases: Record) { // Sort aliases from specific to general (ie. fs/promises before fs) const aliases = Object.fromEntries(Object.entries(_aliases).sort(([a], [b]) => - scoreAlias(b) - scoreAlias(a) + (b.split('/').length - a.split('/').length) || (b.length - a.length) )) // Resolve alias values in relation to each other for (const key in aliases) { @@ -150,8 +150,3 @@ export function resolveAliases (_aliases: Record) { } return aliases } - -const scoreAlias = (alias: string) => { - const segments = alias.split('/') - return segments.length + (segments[segments.length - 1].length / 1000) -}