From 6502e1ceac76b8c044340c5ea63bbe9b52cc8ce0 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 24 Sep 2022 21:39:56 +0100 Subject: [PATCH 1/2] fix: respect path separators when resolving aliases --- src/utils.ts | 2 +- test/utils.spec.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 2305ecd..3dedbdb 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -31,7 +31,7 @@ export function resolveAlias (path: string, aliases: Record) { const _path = normalizeWindowsPath(path) aliases = normalizeAliases(aliases) for (const alias in aliases) { - if (_path.startsWith(alias)) { + if (_path.startsWith(alias) && pathSeparators.includes(_path[alias.length])) { return join(aliases[alias], _path.slice(alias.length)) } } diff --git a/test/utils.spec.ts b/test/utils.spec.ts index d97fd23..dac6e64 100644 --- a/test/utils.spec.ts +++ b/test/utils.spec.ts @@ -30,6 +30,13 @@ describe('alias', () => { expect(resolveAlias(from, aliases)).toBe(to) }) } + it('respects path separators', () => { + const aliases = { + '~': '/root', + '~assets': '/root/some/dir', + } + expect(resolveAlias('~assets/smth.jpg', aliases)).toMatchInlineSnapshot('"/root/some/dir/smth.jpg"') + }) it('unchanged', () => { expect(resolveAlias('foo/bar.js', aliases)).toBe('foo/bar.js') expect(resolveAlias('./bar.js', aliases)).toBe('./bar.js') @@ -39,7 +46,7 @@ describe('alias', () => { describe('filename', () => { const files = { - // POSIX + // POSIX 'test.html': 'test', '/temp/myfile.html': 'myfile', './myfile.html': 'myfile', From 689700537ec45c0356c2480d7fc20a50b5fa744f Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 24 Sep 2022 21:41:43 +0100 Subject: [PATCH 2/2] style: lint --- test/utils.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils.spec.ts b/test/utils.spec.ts index dac6e64..222e514 100644 --- a/test/utils.spec.ts +++ b/test/utils.spec.ts @@ -33,7 +33,7 @@ describe('alias', () => { it('respects path separators', () => { const aliases = { '~': '/root', - '~assets': '/root/some/dir', + '~assets': '/root/some/dir' } expect(resolveAlias('~assets/smth.jpg', aliases)).toMatchInlineSnapshot('"/root/some/dir/smth.jpg"') })