From d848fd0e6ed836efbc1ab4e19746f22f90bec9b2 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 7 Oct 2025 18:05:38 -0500 Subject: [PATCH 1/2] Convert default extension URLs from dict to object --- .../tw-default-extension-urls.js | 16 ++++++++-------- src/virtual-machine.js | 5 ++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/extension-support/tw-default-extension-urls.js b/src/extension-support/tw-default-extension-urls.js index 7b05eb80..53ed768c 100644 --- a/src/extension-support/tw-default-extension-urls.js +++ b/src/extension-support/tw-default-extension-urls.js @@ -1,15 +1,15 @@ // If a project uses an extension but does not specify a URL, it will default to // the URLs given here, if it exists. This is useful for compatibility with other mods. -const defaults = new Map(); +const defaults = { + // Box2D (`griffpatch`) is not listed here because our extension is not actually + // compatible with the original version due to fields vs inputs. -// Box2D (`griffpatch`) is not listed here because our extension is not actually -// compatible with the original version due to fields vs inputs. + // Scratch Lab Animated Text - https://lab.scratch.mit.edu/text/ + text: 'https://extensions.turbowarp.org/lab/text.js', -// Scratch Lab Animated Text - https://lab.scratch.mit.edu/text/ -defaults.set('text', 'https://extensions.turbowarp.org/lab/text.js'); - -// Turboloader's AudioStream -defaults.set('audiostr', 'https://extensions.turbowarp.org/turboloader/audiostream.js'); + // Turboloader's AudioStream + audiostr: 'https://extensions.turbowarp.org/turboloader/audiostream.js' +}; module.exports = defaults; diff --git a/src/virtual-machine.js b/src/virtual-machine.js index 4a8f55cf..2cc5d260 100644 --- a/src/virtual-machine.js +++ b/src/virtual-machine.js @@ -779,7 +779,10 @@ class VirtualMachine extends EventEmitter { this.extensionManager.loadExtensionIdSync(extensionID); } else { // Custom extension - const url = extensionURLs.get(extensionID) || defaultExtensionURLs.get(extensionID); + let url = extensionURLs.get(extensionID); + if (!url && Object.prototype.hasOwnProperty.call(defaultExtensionURLs, extensionID)) { + url = defaultExtensionURLs[extensionID]; + } if (!url) { throw new Error(`Unknown extension: ${extensionID}`); } From 4ab24673c9033c4273e8fadbae5bf79ceee64939 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 7 Oct 2025 18:06:10 -0500 Subject: [PATCH 2/2] Add face sensing to default extension URLs --- src/extension-support/tw-default-extension-urls.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/extension-support/tw-default-extension-urls.js b/src/extension-support/tw-default-extension-urls.js index 53ed768c..de3c3ec7 100644 --- a/src/extension-support/tw-default-extension-urls.js +++ b/src/extension-support/tw-default-extension-urls.js @@ -9,7 +9,10 @@ const defaults = { text: 'https://extensions.turbowarp.org/lab/text.js', // Turboloader's AudioStream - audiostr: 'https://extensions.turbowarp.org/turboloader/audiostream.js' + audiostr: 'https://extensions.turbowarp.org/turboloader/audiostream.js', + + // https://scratch.mit.edu/discuss/topic/842592/ + faceSensing: 'https://extensions.turbowarp.org/lab/face-sensing.js' }; module.exports = defaults;