From cbf00dd8a13aed42183c6ff2eb83ee42fffd28a9 Mon Sep 17 00:00:00 2001 From: GarboMuffin Date: Sat, 25 Feb 2023 19:21:01 -0600 Subject: [PATCH] Wrap baked extensions in an IIFE Closes https://github.com/TurboWarp/packager/issues/636 --- src/packager/packager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/packager/packager.js b/src/packager/packager.js index 9f25295..76df82c 100644 --- a/src/packager/packager.js +++ b/src/packager/packager.js @@ -1012,7 +1012,11 @@ cd "$(dirname "$0")" const url = urlsToFetch[i]; try { const source = await Adapter.fetchExtensionScript(url); - const dataURI = `data:text/javascript;,${encodeURIComponent(source)}`; + // Wrap the extension in an IIFE so that extensions written for the sandbox are less + // likely to cause issues in an unsandboxed environment due to global pollution or + // overriding Scratch.* + const wrappedSource = `(function(Scratch) { ${source} })(Scratch);` + const dataURI = `data:text/javascript;,${encodeURIComponent(wrappedSource)}`; finalURLs.push(dataURI); } catch (e) { finalURLs.push(url);