From 6deb57a31c3659317748791732a163b196c57c59 Mon Sep 17 00:00:00 2001 From: Jesse Skinner Date: Fri, 10 Jan 2020 12:06:11 -0500 Subject: [PATCH 1/3] Add failing test for issue #4240 --- .../samples/spread-attributes-white-space/_expected.html | 3 +++ .../samples/spread-attributes-white-space/main.svelte | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 test/server-side-rendering/samples/spread-attributes-white-space/_expected.html create mode 100644 test/server-side-rendering/samples/spread-attributes-white-space/main.svelte diff --git a/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html b/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html new file mode 100644 index 000000000000..ecf5c120c6a1 --- /dev/null +++ b/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html @@ -0,0 +1,3 @@ + diff --git a/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte b/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte new file mode 100644 index 000000000000..49dcb93fdb2b --- /dev/null +++ b/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte @@ -0,0 +1,7 @@ + + + From 52d81f9987ee44d6fa8e4c22adc72722e216a0a1 Mon Sep 17 00:00:00 2001 From: Jesse Skinner Date: Fri, 10 Jan 2020 12:26:27 -0500 Subject: [PATCH 2/3] Remove JSON.stringify used to encode HTML attributes in SSR. Replace with concatenation of double quotes before and after the value. Fixes #4240 --- src/runtime/internal/ssr.ts | 11 ++++++++--- .../spread-attributes-white-space/_expected.html | 9 +++++++-- .../samples/spread-attributes-white-space/main.svelte | 5 +++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/runtime/internal/ssr.ts b/src/runtime/internal/ssr.ts index 274006f24313..9b13d38c130b 100644 --- a/src/runtime/internal/ssr.ts +++ b/src/runtime/internal/ssr.ts @@ -25,9 +25,14 @@ export function spread(args, classes_to_add) { else if (boolean_attributes.has(name.toLowerCase())) { if (value) str += " " + name; } else if (value != null) { - str += " " + name + "=" + JSON.stringify(String(value) - .replace(/"/g, '"') - .replace(/'/g, ''')); + str += + ' ' + + name + + '="' + + String(value) + .replace(/"/g, '"') + .replace(/'/g, ''') + + '"'; } }); diff --git a/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html b/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html index ecf5c120c6a1..a73bb17e8cb3 100644 --- a/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html +++ b/test/server-side-rendering/samples/spread-attributes-white-space/_expected.html @@ -1,3 +1,8 @@ + bar +"> + + \ No newline at end of file diff --git a/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte b/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte index 49dcb93fdb2b..6919d9ea54cc 100644 --- a/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte +++ b/test/server-side-rendering/samples/spread-attributes-white-space/main.svelte @@ -5,3 +5,8 @@ + + From f9434ff225c6e166fc126027c16986f9d6757eb4 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 13 Jan 2020 11:21:48 -0500 Subject: [PATCH 3/3] format --- src/runtime/internal/ssr.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/runtime/internal/ssr.ts b/src/runtime/internal/ssr.ts index 9b13d38c130b..d914a9874ab6 100644 --- a/src/runtime/internal/ssr.ts +++ b/src/runtime/internal/ssr.ts @@ -25,14 +25,7 @@ export function spread(args, classes_to_add) { else if (boolean_attributes.has(name.toLowerCase())) { if (value) str += " " + name; } else if (value != null) { - str += - ' ' + - name + - '="' + - String(value) - .replace(/"/g, '"') - .replace(/'/g, ''') + - '"'; + str += ` ${name}="${String(value).replace(/"/g, '"').replace(/'/g, ''')}"`; } });