diff --git a/src/generators/server-side-rendering/index.ts b/src/generators/server-side-rendering/index.ts index 779f97502851..db2e8085d6b4 100644 --- a/src/generators/server-side-rendering/index.ts +++ b/src/generators/server-side-rendering/index.ts @@ -61,7 +61,7 @@ export default function ssr( conditions: [], }); - parsed.html.children.forEach((node: Node) => { + trim(parsed.html.children).forEach((node: Node) => { visit(generator, mainBlock, node); }); @@ -122,7 +122,7 @@ export default function ssr( } `} - return \`${generator.renderCode}\`.trim(); + return \`${generator.renderCode}\`; }; ${name}.renderCss = function() { @@ -202,3 +202,25 @@ export default function ssr( return generator.generate(result, options, { name, format }); } + +function trim(nodes) { + let start = 0; + for (; start < nodes.length; start += 1) { + const node = nodes[start]; + if (node.type !== 'Text') break; + + node.data = node.data.replace(/^\s+/, ''); + if (node.data) break; + } + + let end = nodes.length; + for (; end > start; end -= 1) { + const node = nodes[end - 1]; + if (node.type !== 'Text') break; + + node.data = node.data.replace(/\s+$/, ''); + if (node.data) break; + } + + return nodes.slice(start, end); +} diff --git a/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js b/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js index 1dfa59b423a4..b570c5687c3d 100644 --- a/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js +++ b/test/js/samples/ssr-no-oncreate-etc/expected-bundle.js @@ -7,7 +7,7 @@ SvelteComponent.data = function() { SvelteComponent.render = function(state, options = {}) { state = Object.assign({}, state); - return ``.trim(); + return ``; }; SvelteComponent.renderCss = function() { diff --git a/test/js/samples/ssr-no-oncreate-etc/expected.js b/test/js/samples/ssr-no-oncreate-etc/expected.js index 511e5dd74e7b..3a5162aaf355 100644 --- a/test/js/samples/ssr-no-oncreate-etc/expected.js +++ b/test/js/samples/ssr-no-oncreate-etc/expected.js @@ -9,7 +9,7 @@ SvelteComponent.data = function() { SvelteComponent.render = function(state, options = {}) { state = Object.assign({}, state); - return ``.trim(); + return ``; }; SvelteComponent.renderCss = function() {