From ba1e67844e268700406f81188c36d673d6339f35 Mon Sep 17 00:00:00 2001 From: gtmnayan <50981692+gtm-nayan@users.noreply.github.com> Date: Sun, 20 Aug 2023 16:19:32 +0545 Subject: [PATCH] fix: css sourcemap generation with unicode filenames (#9120) * fix: css sourcemap generation with unicode filenames * format --- .changeset/eighty-poems-deliver.md | 5 +++++ packages/svelte/src/compiler/utils/mapped_code.js | 13 ++++++++++++- 2 files changed, 17 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 0000000000..a209b85bd4 --- /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 0987b85ada..22645dd44b 100644 --- a/packages/svelte/src/compiler/utils/mapped_code.js +++ b/packages/svelte/src/compiler/utils/mapped_code.js @@ -292,7 +292,18 @@ 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; } } });