From 2f4f8d49c3321e7b711c5980908af9be44fb7cbb Mon Sep 17 00:00:00 2001
From: "Fred K. Schott" <fkschott@gmail.com>
Date: Thu, 24 Mar 2022 10:41:33 -0700
Subject: [PATCH] fix adblock issue

---
 .changeset/strong-bears-knock.md               |  5 +++++
 packages/astro/src/core/build/static-build.ts  | 12 ++++++------
 packages/astro/test/astro-client-only.test.js  |  2 +-
 packages/astro/test/astro-css-bundling.test.js |  8 ++++----
 packages/astro/test/astro-dynamic.test.js      |  2 +-
 5 files changed, 17 insertions(+), 12 deletions(-)
 create mode 100644 .changeset/strong-bears-knock.md

diff --git a/.changeset/strong-bears-knock.md b/.changeset/strong-bears-knock.md
new file mode 100644
index 000000000000..dd432a9341b2
--- /dev/null
+++ b/.changeset/strong-bears-knock.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Generalize output assets to avoid adblocker false positives
diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts
index e9dd754784ca..de60e8a88592 100644
--- a/packages/astro/src/core/build/static-build.ts
+++ b/packages/astro/src/core/build/static-build.ts
@@ -109,9 +109,9 @@ async function ssrBuild(opts: StaticBuildOptions, internals: BuildInternals, inp
 				input: Array.from(input),
 				output: {
 					format: 'esm',
-					entryFileNames: '[name].[hash].mjs',
-					chunkFileNames: 'chunks/[name].[hash].mjs',
-					assetFileNames: 'assets/[name].[hash][extname]',
+					entryFileNames: 'entry.[hash].mjs',
+					chunkFileNames: 'chunks/chunk.[hash].mjs',
+					assetFileNames: 'assets/asset.[hash][extname]',
 				},
 			},
 			// must match an esbuild target
@@ -162,9 +162,9 @@ async function clientBuild(opts: StaticBuildOptions, internals: BuildInternals,
 				input: Array.from(input),
 				output: {
 					format: 'esm',
-					entryFileNames: '[name].[hash].js',
-					chunkFileNames: 'chunks/[name].[hash].js',
-					assetFileNames: 'assets/[name].[hash][extname]',
+					entryFileNames: 'entry.[hash].js',
+					chunkFileNames: 'chunks/chunk.[hash].js',
+					assetFileNames: 'assets/asset.[hash][extname]',
 				},
 				preserveEntrySignatures: 'exports-only',
 			},
diff --git a/packages/astro/test/astro-client-only.test.js b/packages/astro/test/astro-client-only.test.js
index 80358ece36ed..211a7df2abcb 100644
--- a/packages/astro/test/astro-client-only.test.js
+++ b/packages/astro/test/astro-client-only.test.js
@@ -22,6 +22,6 @@ describe('Client only components', () => {
 		const script = $script.html();
 
 		// test 2: svelte renderer is on the page
-		expect(/import\(".\/PersistentCounter.*/g.test(script)).to.be.ok;
+		expect(/import\(".\/entry.*/g.test(script)).to.be.ok;
 	});
 });
diff --git a/packages/astro/test/astro-css-bundling.test.js b/packages/astro/test/astro-css-bundling.test.js
index 588febc829b2..105b35bc94ce 100644
--- a/packages/astro/test/astro-css-bundling.test.js
+++ b/packages/astro/test/astro-css-bundling.test.js
@@ -5,9 +5,9 @@ import { loadFixture } from './test-utils.js';
 // note: the hashes should be deterministic, but updating the file contents will change hashes
 // be careful not to test that the HTML simply contains CSS, because it always will! filename and quanity matter here (bundling).
 const EXPECTED_CSS = {
-	'/index.html': ['/assets/index'], // don’t match hashes, which change based on content
-	'/one/index.html': ['/assets/one'],
-	'/two/index.html': ['/assets/two'],
+	'/index.html': ['/assets/'], // don’t match hashes, which change based on content
+	'/one/index.html': ['/assets/'],
+	'/two/index.html': ['/assets/'],
 };
 const UNEXPECTED_CSS = ['/src/components/nav.css', '../css/typography.css', '../css/colors.css', '../css/page-index.css', '../css/page-one.css', '../css/page-two.css'];
 
@@ -32,7 +32,7 @@ describe('CSS Bundling', function () {
 			// test 1: assert new bundled CSS is present
 			for (const href of css) {
 				const link = $(`link[rel="stylesheet"][href^="${href}"]`);
-				expect(link).to.have.lengthOf(1);
+				expect(link.length).to.be.greaterThanOrEqual(1);
 				const outHref = link.attr('href');
 				builtCSS.add(outHref.startsWith('../') ? outHref.substr(2) : outHref);
 			}
diff --git a/packages/astro/test/astro-dynamic.test.js b/packages/astro/test/astro-dynamic.test.js
index 81a960ffb249..bc3d10b7844a 100644
--- a/packages/astro/test/astro-dynamic.test.js
+++ b/packages/astro/test/astro-dynamic.test.js
@@ -37,6 +37,6 @@ describe('Dynamic components', () => {
 		// test 2: correct script is being loaded.
 		// because of bundling, we don't have access to the source import,
 		// only the bundled import.
-		expect($('script').html()).to.include(`import setup from '../only`);
+		expect($('script').html()).to.include(`import setup from '../entry`);
 	});
 });