diff --git a/app/assets/javascripts/discourse/app/index.html b/app/assets/javascripts/discourse/app/index.html
index 6cb6f952edb..2ce49cd5b40 100644
--- a/app/assets/javascripts/discourse/app/index.html
+++ b/app/assets/javascripts/discourse/app/index.html
@@ -22,9 +22,11 @@
-
-
+
+
+
+
{{content-for "head"}}
diff --git a/app/assets/javascripts/discourse/package.json b/app/assets/javascripts/discourse/package.json
index 310092f8ec7..43ff2d4d246 100644
--- a/app/assets/javascripts/discourse/package.json
+++ b/app/assets/javascripts/discourse/package.json
@@ -59,7 +59,6 @@
"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 6ccffa0d23a..004e7613e16 100644
--- a/app/assets/javascripts/discourse/tests/index.html
+++ b/app/assets/javascripts/discourse/tests/index.html
@@ -49,10 +49,17 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/yarn.lock b/app/assets/javascripts/yarn.lock
index 6a919b464db..11457cba007 100644
--- a/app/assets/javascripts/yarn.lock
+++ b/app/assets/javascripts/yarn.lock
@@ -3730,16 +3730,6 @@ 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 296b91a45be..cdaf0ee9e97 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -133,10 +133,12 @@ module ApplicationHelper
end
def preload_script(script)
- scripts = [script]
+ scripts = []
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 291d4429d99..1604bb18ab3 100644
--- a/lib/ember_cli.rb
+++ b/lib/ember_cli.rb
@@ -37,19 +37,15 @@ module EmberCli
def self.script_chunks
return @@chunk_infos if defined?(@@chunk_infos)
- raw_chunk_infos =
- JSON.parse(
- File.read("#{Rails.configuration.root}/app/assets/javascripts/discourse/dist/chunks.json"),
- )
+ chunk_infos = {}
- 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
+ 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 = chunk_infos if Rails.env.production?
chunk_infos
@@ -78,4 +74,22 @@ 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