diff --git a/app/assets/javascripts/discourse/app/index.html b/app/assets/javascripts/discourse/app/index.html
index 2ce49cd5b40..6cb6f952edb 100644
--- a/app/assets/javascripts/discourse/app/index.html
+++ b/app/assets/javascripts/discourse/app/index.html
@@ -22,11 +22,9 @@
+
-
-
-
-
+
{{content-for "head"}}
diff --git a/app/assets/javascripts/discourse/package.json b/app/assets/javascripts/discourse/package.json
index f18a6cd3213..1fb424493ff 100644
--- a/app/assets/javascripts/discourse/package.json
+++ b/app/assets/javascripts/discourse/package.json
@@ -59,6 +59,7 @@
"discourse-common": "1.0.0",
"discourse-plugins": "1.0.0",
"ember-auto-import": "^2.6.3",
+ "ember-auto-import-chunks-json-generator": "^1.1.0",
"ember-buffered-proxy": "^2.1.1",
"ember-cached-decorator-polyfill": "^1.0.2",
"ember-cli": "~5.0.0",
diff --git a/app/assets/javascripts/discourse/tests/index.html b/app/assets/javascripts/discourse/tests/index.html
index 004e7613e16..6ccffa0d23a 100644
--- a/app/assets/javascripts/discourse/tests/index.html
+++ b/app/assets/javascripts/discourse/tests/index.html
@@ -49,17 +49,10 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/app/assets/javascripts/yarn.lock b/app/assets/javascripts/yarn.lock
index cf82c4fa56b..6fb13a2bd30 100644
--- a/app/assets/javascripts/yarn.lock
+++ b/app/assets/javascripts/yarn.lock
@@ -3730,6 +3730,16 @@ electron-to-chromium@^1.4.477:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz#a57534b70d2bdee7e1ad7dbd4c91e560cbd08db1"
integrity sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==
+ember-auto-import-chunks-json-generator@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ember-auto-import-chunks-json-generator/-/ember-auto-import-chunks-json-generator-1.1.0.tgz#9b3ee4b6e2f274fdbf722762fc9d72f13942a594"
+ integrity sha512-50JvuBVD5mLx+9YMcBLlV8HIVdtdHHzEfVwID8jo8yRo83x5SAKULdSH+ZwwNTYcUNI7amMKDl9RA5LBGzbDWA==
+ dependencies:
+ broccoli-merge-trees "^4.2.0"
+ broccoli-plugin "^4.0.7"
+ ember-cli-babel "^7.26.11"
+ ember-cli-htmlbars "^6.1.1"
+
ember-auto-import@^2.2.3, ember-auto-import@^2.5.0, ember-auto-import@^2.6.0, ember-auto-import@^2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.6.3.tgz#f18d1b93dd10b08ba5496518436f9d56dd4e000a"
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index cdaf0ee9e97..296b91a45be 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -133,12 +133,10 @@ module ApplicationHelper
end
def preload_script(script)
- scripts = []
+ scripts = [script]
if chunks = EmberCli.script_chunks[script]
scripts.push(*chunks)
- else
- scripts.push(script)
end
scripts
diff --git a/lib/ember_cli.rb b/lib/ember_cli.rb
index 1604bb18ab3..291d4429d99 100644
--- a/lib/ember_cli.rb
+++ b/lib/ember_cli.rb
@@ -37,15 +37,19 @@ module EmberCli
def self.script_chunks
return @@chunk_infos if defined?(@@chunk_infos)
- chunk_infos = {}
+ raw_chunk_infos =
+ JSON.parse(
+ File.read("#{Rails.configuration.root}/app/assets/javascripts/discourse/dist/chunks.json"),
+ )
- begin
- chunk_infos.merge! parse_chunks_from_html("tests/index.html")
- rescue Errno::ENOENT
- # production build
- end
-
- chunk_infos.merge! parse_chunks_from_html("index.html")
+ chunk_infos =
+ raw_chunk_infos["scripts"]
+ .map do |info|
+ logical_name = info["afterFile"][%r{\Aassets/(.*)\.js\z}, 1]
+ chunks = info["scriptChunks"].map { |filename| filename[%r{\Aassets/(.*)\.js\z}, 1] }
+ [logical_name, chunks]
+ end
+ .to_h
@@chunk_infos = chunk_infos if Rails.env.production?
chunk_infos
@@ -74,22 +78,4 @@ module EmberCli
File.basename(full_path)
end
end
-
- def self.parse_chunks_from_html(path)
- html = File.read("#{Rails.root}/app/assets/javascripts/discourse/dist/#{path}")
- doc = Nokogiri::HTML5.parse(html)
-
- chunk_infos = {}
-
- doc
- .css("discourse-chunked-script")
- .each do |discourse_script|
- entrypoint = discourse_script.attr("entrypoint")
- chunk_infos[entrypoint] = discourse_script
- .css("script[src]")
- .map { |script| script.attr("src")[%r{\A/assets/(.*)\.js\z}, 1] }
- end
-
- chunk_infos
- end
end