Skip to content

Commit 886ad46

Browse files
committed
1 parent 2c2a872 commit 886ad46

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

packages/kit/src/runtime/client/renderer.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,7 @@ export class Renderer {
223223
if (is_leaf) {
224224
const serialized = document.querySelector('[data-type="svelte-props"]');
225225
if (serialized) {
226-
props = JSON.parse(
227-
/** @type {string} */ (serialized.textContent)
228-
.replace(new RegExp('&', 'g'), '&')
229-
.replace(new RegExp('&lt;', 'g'), '<')
230-
.replace(new RegExp('&gt;', 'g'), '>')
231-
);
226+
props = JSON.parse(/** @type {string} */ (serialized.textContent));
232227
}
233228
}
234229

packages/kit/src/runtime/server/page/render.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,24 @@ export async function render_response({
260260
.join('\n\t');
261261

262262
if (shadow_props) {
263-
// prettier-ignore
264-
body += `<script type="application/json" data-type="svelte-props">${s(shadow_props).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')}</script>`;
263+
// adapted from https://github.com/vercel/next.js/blob/694407450638b037673c6d714bfe4126aeded740/packages/next/server/htmlescape.ts
264+
// based on https://github.com/zertosh/htmlescape
265+
// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE
266+
/**
267+
* @type { Record<string, string> }
268+
*/
269+
const escape_lookup = {
270+
'&': '\\u0026',
271+
'>': '\\u003e',
272+
'<': '\\u003c',
273+
'\u2028': '\\u2028',
274+
'\u2029': '\\u2029'
275+
};
276+
const escaped_shadow_props = s(shadow_props).replace(
277+
/[&><\u2028\u2029]/g,
278+
(match) => escape_lookup[match]
279+
);
280+
body += `<script type="application/json" data-type="svelte-props">${escaped_shadow_props}</script>`;
265281
}
266282
}
267283

0 commit comments

Comments
 (0)