From 0689338060a2c87151e554403199817e3ab687a8 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 11 May 2022 09:51:06 +0100 Subject: [PATCH] DEV: Ensure service-worker sourcemap URLs do not duplicate extension (#16704) `script_asset_path('.../blah.js.map')` was appending `.js`, which would result in a filename like `.js.map.js`. It would also lose the `/assets` prefix, since the map files are not included in the sprockets manifest. This commit updates the sourceMappingURL rewriting logic to calculate the service-worker's own JS url, and then append `.map`. --- app/controllers/static_controller.rb | 2 +- spec/requests/static_controller_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb index ded832cb47b..c1e18eed909 100644 --- a/app/controllers/static_controller.rb +++ b/app/controllers/static_controller.rb @@ -206,7 +206,7 @@ class StaticController < ApplicationController content = Rails.application.assets_manifest.find_sources('service-worker.js').first content = content.sub( /^\/\/# sourceMappingURL=(service-worker-.+\.map)$/ - ) { "//# sourceMappingURL=#{helpers.script_asset_path(Regexp.last_match(1))}" } + ) { "//# sourceMappingURL=#{helpers.script_asset_path('service-worker')}.map" } render( plain: content, content_type: 'application/javascript' diff --git a/spec/requests/static_controller_spec.rb b/spec/requests/static_controller_spec.rb index 4f0a926626a..cbebd9f35fa 100644 --- a/spec/requests/static_controller_spec.rb +++ b/spec/requests/static_controller_spec.rb @@ -420,7 +420,7 @@ describe StaticController do get "/service-worker.js" expect(response.status).to eq(200) expect(response.content_type).to start_with("application/javascript") - expect(response.body).to include("sourceMappingURL=/assets/service-worker-abcde.js.map") + expect(response.body).to include("sourceMappingURL=/assets/service-worker.js.map\n") end end end