From d4a5ebe273a8bfabb7b5b221287454de87ed8ccb Mon Sep 17 00:00:00 2001
From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
Date: Mon, 18 May 2026 19:58:44 +0200
Subject: [PATCH] refactor: use ES module imports in browser core (#4158)
With these changes a few browser-side core files now use native ES
modules. `Loader`, `MMSocket`, `Module` and `MM` can be imported
directly instead of being read off `window`. `main.js` and `loader.js`
are no longer wrapped in IIFEs - they're just normal modules now.
`Module`, `MM` and `MMSocket` are still exposed as globals, so
third-party modules that use the old API keep working.
The changes are mostly structural, behavior should stay the same. A few
internal helpers in `main.js` got an underscore prefix because their
names clashed with public `MM` methods.
## Why
The old setup relied a lot on script order: a file could use `Loader` or
`MMSocket` only because another script happened to put it on `window`
first. Imports make that explicit.
The bigger goal is to move away from the legacy script-loading patterns
- making it easier to understand and easier to test - in other words:
easier to maintain.
More of the core could be "cleaned up" the same way, but that would blow
up this PR.
For reviewing, I recommend to hide the whitespace changes.
---
index.html | 6 +-
js/loader.js | 508 ++++----
js/main.js | 1351 +++++++++++----------
js/module.js | 17 +-
js/socketclient.js | 5 +-
tests/e2e/translations_spec.js | 39 +-
tests/unit/classes/module_spec.js | 76 +-
tests/unit/functions/cmp_versions_spec.js | 66 +-
8 files changed, 1084 insertions(+), 984 deletions(-)
diff --git a/index.html b/index.html
index a91bf469..d2d96d29 100644
--- a/index.html
+++ b/index.html
@@ -51,11 +51,9 @@
-
-
-
-
+
+