From a51ebf9422a11552a31aa17693023ba5130ba018 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 20 Aug 2023 15:26:19 +0545 Subject: [PATCH 1/2] fix: css sourcemap generation with unicode filenames --- .changeset/eighty-poems-deliver.md | 5 +++++ packages/svelte/src/compiler/utils/mapped_code.js | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/eighty-poems-deliver.md diff --git a/.changeset/eighty-poems-deliver.md b/.changeset/eighty-poems-deliver.md new file mode 100644 index 000000000000..a209b85bd4cf --- /dev/null +++ b/.changeset/eighty-poems-deliver.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: css sourcemap generation with unicode filenames diff --git a/packages/svelte/src/compiler/utils/mapped_code.js b/packages/svelte/src/compiler/utils/mapped_code.js index 0987b85adaeb..4a11d2a31d52 100644 --- a/packages/svelte/src/compiler/utils/mapped_code.js +++ b/packages/svelte/src/compiler/utils/mapped_code.js @@ -292,7 +292,16 @@ export function apply_preprocessor_sourcemap(filename, svelte_map, preprocessor_ toUrl: { enumerable: false, value: function toUrl() { - return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + let b64 = ''; + if (typeof window !== 'undefined' && window.btoa) { + // btoa doesn't support multi-byte characters + b64 = window.btoa(unescape(encodeURIComponent(this.toString()))); + } else if (typeof Buffer !== 'undefined') { + b64 = Buffer.from(this.toString(), 'utf8').toString('base64'); + } else { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be present to use toUrl.'); + } + return 'data:application/json;charset=utf-8;base64,' + b64; } } }); From 4edc30800284dbb659d88a06cb31abfdbe362c23 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sun, 20 Aug 2023 15:36:23 +0545 Subject: [PATCH 2/2] format --- packages/svelte/src/compiler/utils/mapped_code.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/utils/mapped_code.js b/packages/svelte/src/compiler/utils/mapped_code.js index 4a11d2a31d52..22645dd44b34 100644 --- a/packages/svelte/src/compiler/utils/mapped_code.js +++ b/packages/svelte/src/compiler/utils/mapped_code.js @@ -299,7 +299,9 @@ export function apply_preprocessor_sourcemap(filename, svelte_map, preprocessor_ } else if (typeof Buffer !== 'undefined') { b64 = Buffer.from(this.toString(), 'utf8').toString('base64'); } else { - throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be present to use toUrl.'); + throw new Error( + 'Unsupported environment: `window.btoa` or `Buffer` should be present to use toUrl.' + ); } return 'data:application/json;charset=utf-8;base64,' + b64; }