From b169edb5d2f9fd1999f430c7453a36045c0191db Mon Sep 17 00:00:00 2001 From: Dane David Date: Thu, 7 Jul 2022 13:23:09 +0200 Subject: [PATCH] Support exclusively special characters in component filenames. Fixes #7143. --- src/compiler/compile/utils/__test__.ts | 6 ++++++ src/compiler/compile/utils/get_name_from_filename.ts | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compiler/compile/utils/__test__.ts b/src/compiler/compile/utils/__test__.ts index 7777bc6afb..3ade3dca2b 100644 --- a/src/compiler/compile/utils/__test__.ts +++ b/src/compiler/compile/utils/__test__.ts @@ -13,4 +13,10 @@ describe('get_name_from_filename', () => { it('handles Windows filenames', () => { assert.equal(get_name_from_filename('path\\to\\Widget.svelte'), 'Widget'); }); + + it('handles special characters in filenames', () => { + assert.equal(get_name_from_filename('@.svelte'), '_'); + assert.equal(get_name_from_filename('&.svelte'), '_'); + assert.equal(get_name_from_filename('~.svelte'), '_'); + }); }); diff --git a/src/compiler/compile/utils/get_name_from_filename.ts b/src/compiler/compile/utils/get_name_from_filename.ts index b05605b5ee..daa8bbb0a7 100644 --- a/src/compiler/compile/utils/get_name_from_filename.ts +++ b/src/compiler/compile/utils/get_name_from_filename.ts @@ -15,8 +15,8 @@ export default function get_name_from_filename(filename: string) { .replace(/%/g, 'u') .replace(/\.[^.]+$/, '') .replace(/[^a-zA-Z_$0-9]+/g, '_') - .replace(/^_/, '') - .replace(/_$/, '') + .replace(/^_(?=.)/, '') + .replace(/(?<=.)_$/, '') .replace(/^(\d)/, '_$1'); if (!base) {