diff --git a/core/basepage.php b/core/basepage.php
index bd41e826..f151e2f9 100644
--- a/core/basepage.php
+++ b/core/basepage.php
@@ -380,6 +380,9 @@ class BasePage
$css_cache_file = $this->get_css_cache_file($theme_name, $config_latest);
$this->add_html_header("", 43);
+ $initjs_cache_file = $this->get_initjs_cache_file($theme_name, $config_latest);
+ $this->add_html_header("", 44);
+
$js_cache_file = $this->get_js_cache_file($theme_name, $config_latest);
$this->add_html_header("", 44);
}
@@ -407,6 +410,29 @@ class BasePage
return $css_cache_file;
}
+ private function get_initjs_cache_file(string $theme_name, int $config_latest): string
+ {
+ $js_latest = $config_latest;
+ $js_files = array_merge(
+ zglob("ext/{" . Extension::get_enabled_extensions_as_string() . "}/init.js"),
+ zglob("themes/$theme_name/init.js")
+ );
+ foreach ($js_files as $js) {
+ $js_latest = max($js_latest, filemtime($js));
+ }
+ $js_md5 = md5(serialize($js_files));
+ $js_cache_file = data_path("cache/initscript/{$theme_name}.{$js_latest}.{$js_md5}.js");
+ if (!file_exists($js_cache_file)) {
+ $mcss = new \MicroBundler\MicroBundler();
+ foreach($js_files as $js) {
+ $mcss->addSource($js, file_get_contents($js));
+ }
+ $mcss->save($js_cache_file);
+ }
+
+ return $js_cache_file;
+ }
+
private function get_js_cache_file(string $theme_name, int $config_latest): string
{
$js_latest = $config_latest;
@@ -435,7 +461,6 @@ class BasePage
return $js_cache_file;
}
-
/**
* @return array A list of stylesheets relative to the theme root.
*/
diff --git a/ext/static_files/init.js b/ext/static_files/init.js
new file mode 100644
index 00000000..d45f34e3
--- /dev/null
+++ b/ext/static_files/init.js
@@ -0,0 +1,6 @@
+function shm_cookie_set(name, value) {
+ Cookies.set(name, value, {expires: 365, samesite: "lax", path: "/"});
+}
+function shm_cookie_get(name) {
+ return Cookies.get(name);
+}
diff --git a/ext/static_files/script.js b/ext/static_files/script.js
index 61eb16b3..889e1483 100644
--- a/ext/static_files/script.js
+++ b/ext/static_files/script.js
@@ -1,12 +1,3 @@
-/*jshint bitwise:false, curly:true, eqeqeq:true, evil:true, forin:false, noarg:true, noempty:true, nonew:true, undef:false, strict:false, browser:true */
-
-function shm_cookie_set(name, value) {
- Cookies.set(name, value, {expires: 365, samesite: "lax", path: "/"});
-}
-function shm_cookie_get(name) {
- return Cookies.get(name);
-}
-
document.addEventListener('DOMContentLoaded', () => {
/** Load jQuery extensions **/
//Code via: https://stackoverflow.com/a/13106698