From d3247851f04e911c134cfedc22db17b7d61c53d9 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Wed, 28 Jun 2023 14:49:10 -0500 Subject: [PATCH] Pass `compressHTML` settings to manifest (#7488) * fix(#7333): pass compressHTML to manifest * chore: add compressHTML to astro:ssr-manifest test --- .changeset/mean-spoons-tie.md | 5 +++++ packages/astro/src/core/app/index.ts | 4 +++- packages/astro/src/core/app/types.ts | 1 + packages/astro/src/core/build/plugins/plugin-ssr.ts | 1 + packages/astro/test/ssr-manifest.test.js | 7 +++++++ 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .changeset/mean-spoons-tie.md diff --git a/.changeset/mean-spoons-tie.md b/.changeset/mean-spoons-tie.md new file mode 100644 index 0000000000..22d10d41fe --- /dev/null +++ b/.changeset/mean-spoons-tie.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Pass `compressHTML` setting to server adapters diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index ae0c3fb00e..54fdc56c26 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -204,6 +204,7 @@ export class App { const url = new URL(request.url); const pathname = prependForwardSlash(this.removeBase(url.pathname)); const info = this.#routeDataToRouteInfo.get(routeData!)!; + const isCompressHTML = this.#manifest.compressHTML ?? false; // may be used in the future for handling rel=modulepreload, rel=icon, rel=manifest etc. const links = new Set(); const styles = createStylesheetElementSet(info.styles); @@ -252,7 +253,7 @@ export class App { page.onRequest as MiddlewareResponseHandler, apiContext, () => { - return renderPage({ mod, renderContext, env: this.#env, cookies: apiContext.cookies }); + return renderPage({ mod, renderContext, env: this.#env, cookies: apiContext.cookies, isCompressHTML }); } ); } else { @@ -261,6 +262,7 @@ export class App { renderContext, env: this.#env, cookies: apiContext.cookies, + isCompressHTML }); } Reflect.set(request, responseSentSymbol, true); diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts index 9af15bf502..927da06d97 100644 --- a/packages/astro/src/core/app/types.ts +++ b/packages/astro/src/core/app/types.ts @@ -38,6 +38,7 @@ export type SSRManifest = { routes: RouteInfo[]; site?: string; base?: string; + compressHTML?: boolean; assetsPrefix?: string; markdown: MarkdownRenderingOptions; renderers: SSRLoadedRenderer[]; diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index ebda7fb3e6..254037e595 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -482,6 +482,7 @@ function buildManifest( routes, site: settings.config.site, base: settings.config.base, + compressHTML: settings.config.compressHTML, assetsPrefix: settings.config.build.assetsPrefix, markdown: settings.config.markdown, componentMetadata: Array.from(internals.componentMetadata), diff --git a/packages/astro/test/ssr-manifest.test.js b/packages/astro/test/ssr-manifest.test.js index cb876bde98..4e55212209 100644 --- a/packages/astro/test/ssr-manifest.test.js +++ b/packages/astro/test/ssr-manifest.test.js @@ -11,6 +11,7 @@ describe('astro:ssr-manifest', () => { fixture = await loadFixture({ root: './fixtures/ssr-manifest/', output: 'server', + compressHTML: true, adapter: testAdapter(), }); await fixture.build(); @@ -25,4 +26,10 @@ describe('astro:ssr-manifest', () => { const $ = cheerio.load(html); expect($('#assets').text()).to.equal('["/_astro/index.a8a337e4.css"]'); }); + + it('includes compressHTML', async () => { + const app = await fixture.loadTestAdapterApp(); + expect(app.manifest).to.haveOwnProperty('compressHTML'); + expect(app.manifest.compressHTML).to.be.true; + }); });