8000 bug #52869 [AssetMapper] Improve link generation script (smnandre) · symfony/symfony@c12ab3d · GitHub
[go: up one dir, main page]

Skip to content

Commit c12ab3d

Browse files
bug #52869 [AssetMapper] Improve link generation script (smnandre)
This PR was squashed before being merged into the 6.4 branch. Discussion ---------- [AssetMapper] Improve link generation script | Q | A | ------------- | --- | Branch? | 6.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Issues | - | License | MIT Avoid JS console warnings due to missing comma and shorten a bit the code (document.head is available since IE9) Felt on it while investigating this HTTPS/2/Push thing with Firefox (poke `@weaverryan`) Update: remove the "?" after 7.1 to please carson :) Update(bis): target 6.4 / bugfix Commits ------- 5ad7a1e [AssetMapper] Improve link generation script
2 parents 8908ee9 + 5ad7a1e commit c12ab3d

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function render(string|array $entryPoint, array $attributes = []): string
7878
// importmap entry is a noop
7979
$importMap[$importName] = 'data:application/javascript,';
8080
} else {
81-
$importMap[$importName] = 'data:application/javascript,'.rawurlencode(sprintf('const d=document,l=d.createElement("link");l.rel="stylesheet",l.href="%s",(d.head||d.getElementsByTagName("head")[0]).appendChild(l)', $path));
81+
$importMap[$importName] = 'data:application/javascript,'.rawurlencode(sprintf('document.head.appendChild(Object.assign(document.createElement("link"),{rel:"stylesheet",href:"%s"}))', addslashes($path)));
8282
}
8383
}
8484

src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public function testBasicRender()
9292
$this->assertStringContainsString('"app_css_preload": "data:application/javascript,', $html);
9393
$this->assertStringContainsString('<link rel="stylesheet" href="/subdirectory/assets/styles/app-preload-d1g35t.css">', $html);
9494
// non-preloaded CSS file
95-
$this->assertStringContainsString('"app_css_no_preload": "data:application/javascript,const%20d%3Ddocument%2Cl%3Dd.createElement%28%22link%22%29%3Bl.rel%3D%22stylesheet%22%2Cl.href%3D%22%2Fsubdirectory%2Fassets%2Fstyles%2Fapp-nopreload-d1g35t.css%22%2C%28d.head%7C%7Cd.getElementsByTagName%28%22head%22%29%5B0%5D%29.appendChild%28l%29', $html);
95+
$this->assertStringContainsString('"app_css_no_preload": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fsubdirectory%2Fassets%2Fstyles%2Fapp-nopreload-d1g35t.css%22%7D', $html);
9696
$this->assertStringNotContainsString('<link rel="stylesheet" href="/subdirectory/assets/styles/app-nopreload-d1g35t.css">', $html);
9797
// remote js
9898
$this->assertStringContainsString('"remote_js": "https://cdn.example.com/assets/remote-d1g35t.js"', $html);

0 commit comments

Comments
 (0)
0