From 24d46fd9811f782ee7e320c21b1eab4f116adea4 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 31 Aug 2023 19:28:48 +0200 Subject: [PATCH] Revert "DEV: Improve strategy for identifying ember-cli JS chunks (#23336)" (#23355) This reverts commit 2c58d456dd56c5dff5f8c8b8f1ae638564e5b00b. --- .../javascripts/discourse/app/index.html | 6 +-- app/assets/javascripts/discourse/package.json | 1 + .../javascripts/discourse/tests/index.html | 15 ++------ app/assets/javascripts/yarn.lock | 10 +++++ app/helpers/application_helper.rb | 4 +- lib/ember_cli.rb | 38 ++++++------------- 6 files changed, 30 insertions(+), 44 deletions(-) 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