From f34bb3d640973c86f59b92582a4125f765143288 Mon Sep 17 00:00:00 2001 From: David Reed Date: Wed, 23 Nov 2022 14:37:37 -0500 Subject: [PATCH] js-safe worker injection --- src/uv.sw.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/uv.sw.js b/src/uv.sw.js index cb8a6ef..73ec65b 100644 --- a/src/uv.sw.js +++ b/src/uv.sw.js @@ -174,10 +174,21 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { switch (request.destination) { case 'script': case 'worker': - responseCtx.body = `if (!self.__uv && self.importScripts) importScripts('${ultraviolet.bundleScript}', '${ultraviolet.clientScript}', '${ultraviolet.configScript}', '${ultraviolet.handlerScript}');\n`; - responseCtx.body += ultraviolet.js.rewrite( - await response.text() - ); + { + // craft a JS-safe list of arguments + const scripts = [ + ultraviolet.bundleScript, + ultraviolet.clientScript, + ultraviolet.configScript, + ultraviolet.handlerScript, + ] + .map((script) => JSON.stringify(script)) + .join(','); + responseCtx.body = `if (!self.__uv && self.importScripts) importScripts(${scripts});\n`; + responseCtx.body += ultraviolet.js.rewrite( + await response.text() + ); + } break; case 'style': responseCtx.body = ultraviolet.rewriteCSS(