From fa2a5472b385752e995fa92990362963455e7f50 Mon Sep 17 00:00:00 2001 From: Memmie Lenglet Date: Thu, 24 Aug 2023 11:48:12 +0200 Subject: [PATCH] Escape code injected in exported resources --- coral-gulp/plugins/rollup-plugin-resources.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/coral-gulp/plugins/rollup-plugin-resources.js b/coral-gulp/plugins/rollup-plugin-resources.js index 0993f865a8..2aae6c7ef0 100644 --- a/coral-gulp/plugins/rollup-plugin-resources.js +++ b/coral-gulp/plugins/rollup-plugin-resources.js @@ -43,10 +43,17 @@ function resources(opts) { fs.outputFile(path.join(process.cwd(), outputPath), code); // Export SVG as js file + const charMap = { + "'": "\\'", + '\\': '\\\\', + '\n': '\\n', + '\r': '\\r' + }; + const literal = `'${code.split("").map(function(c){return charMap[c] || c}).join("")}'`; if (outputPath.endsWith('spectrum-icons-color.svg')) { - code = `document.body?document.body.insertAdjacentHTML('beforeend', '${code}'):document.addEventListener('DOMContentLoaded',function(){document.body.insertAdjacentHTML('beforeend', '${code}')})`; + code = `document.body?document.body.insertAdjacentHTML('beforeend', ${literal}):document.addEventListener('DOMContentLoaded',function(){document.body.insertAdjacentHTML('beforeend', ${literal})})`; } else { - code = `document.head.insertAdjacentHTML('beforeend', '${code}')`; + code = `document.head.insertAdjacentHTML('beforeend', ${literal})`; } fs.outputFile(path.join(process.cwd(), outputPath.replace('.svg', '.js')), code);