From 6aa36d3f890f761ab12bce0087a971b1e4c79f3f Mon Sep 17 00:00:00 2001 From: Edward Badel Date: Fri, 28 Jan 2022 09:33:37 -0500 Subject: [PATCH] Allowed setting of variables inside webpack modules --- gulp/mod.js | 3 +++ gulp/webpack.config.js | 3 +++ src/js/mods/modloader.js | 7 +++++-- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 gulp/mod.js diff --git a/gulp/mod.js b/gulp/mod.js new file mode 100644 index 00000000..ccbd942b --- /dev/null +++ b/gulp/mod.js @@ -0,0 +1,3 @@ +module.exports = function (source, map) { + return source + `\nexport let $s=(n,v)=>eval(n+"="+v)`; +}; diff --git a/gulp/webpack.config.js b/gulp/webpack.config.js index 7db0bf0b..3c07d7cc 100644 --- a/gulp/webpack.config.js +++ b/gulp/webpack.config.js @@ -93,6 +93,9 @@ module.exports = ({ watch = false, standalone = false, chineseVersion = false, w end: "typehints:end", }, }, + { + loader: path.resolve(__dirname, "mod.js"), + }, ], }, { diff --git a/src/js/mods/modloader.js b/src/js/mods/modloader.js index 48911abd..ed5368b2 100644 --- a/src/js/mods/modloader.js +++ b/src/js/mods/modloader.js @@ -66,24 +66,27 @@ export class ModLoader { // @ts-ignore const module = modules(key); for (const member in module) { - if (member === "default") { + if (member === "default" || member === "$s") { + // Setter continue; } if (exports[member]) { throw new Error("Duplicate export of " + member); } + Object.defineProperty(exports, member, { get() { return module[member]; }, set(v) { - module[member] = v; + module["$s"](member, v); }, }); } }); window.shapez = exports; + console.log(shapez); } }