From b680c3eb97b3bdd271dd5e0e848e3dba4221f140 Mon Sep 17 00:00:00 2001 From: matthewp Date: Thu, 25 Aug 2022 19:23:09 +0000 Subject: [PATCH] [ci] format --- packages/astro/src/@types/astro.ts | 10 +-- packages/astro/src/core/build/generate.ts | 24 ++++++-- packages/astro/test/page-format.test.js | 74 +++++++++++------------ 3 files changed, 60 insertions(+), 48 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index ce0c3e4cb..8958605ce 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -517,13 +517,13 @@ export interface AstroUserConfig { * } * } * ``` - * + * * #### Effect on Astro.url * Setting `build.format` controls what `Astro.url` is set to during the build. When it is: - * - `directory` - The `Astro.url.pathname` will include a trailing slash to mimic folder behavior; ie `/foo/`. - * - `file` - The `Astro.url.pathname` will include `.html`; ie `/foo.html`. - * - * This means that when you create relative URLs using `new URL('./relative', Astro.url)`, you will get consistent behavior between dev and build. + * - `directory` - The `Astro.url.pathname` will include a trailing slash to mimic folder behavior; ie `/foo/`. + * - `file` - The `Astro.url.pathname` will include `.html`; ie `/foo.html`. + * + * This means that when you create relative URLs using `new URL('./relative', Astro.url)`, you will get consistent behavior between dev and build. */ format?: 'file' | 'directory'; }; diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 218f1bab3..d59b650b4 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -244,7 +244,13 @@ function addPageName(pathname: string, opts: StaticBuildOptions): void { opts.pageNames.push(pathname.replace(/^\//, '')); } -function getUrlForPath(pathname: string, base: string, origin: string, format: 'directory' | 'file', routeType: RouteType): URL { +function getUrlForPath( + pathname: string, + base: string, + origin: string, + format: 'directory' | 'file', + routeType: RouteType +): URL { /** * Examples: * pathname: /, /foo @@ -252,13 +258,14 @@ function getUrlForPath(pathname: string, base: string, origin: string, format: ' */ const ending = format === 'directory' ? '/' : '.html'; let buildPathname: string; - if(pathname === '/' || pathname === '') { + if (pathname === '/' || pathname === '') { buildPathname = base; - } else if(routeType === 'endpoint') { + } else if (routeType === 'endpoint') { const buildPathRelative = removeLeadingForwardSlash(pathname); buildPathname = base + buildPathRelative; } else { - const buildPathRelative = removeTrailingForwardSlash(removeLeadingForwardSlash(pathname)) + ending; + const buildPathRelative = + removeTrailingForwardSlash(removeLeadingForwardSlash(pathname)) + ending; buildPathname = base + buildPathRelative; } const url = new URL(buildPathname, origin); @@ -312,8 +319,13 @@ async function generatePath( } const ssr = opts.astroConfig.output === 'server'; - const url = getUrlForPath(pathname, opts.astroConfig.base, origin, - opts.astroConfig.build.format, pageData.route.type); + const url = getUrlForPath( + pathname, + opts.astroConfig.base, + origin, + opts.astroConfig.build.format, + pageData.route.type + ); const options: RenderOptions = { adapterName: undefined, links, diff --git a/packages/astro/test/page-format.test.js b/packages/astro/test/page-format.test.js index cc31d49d3..2143bf09b 100644 --- a/packages/astro/test/page-format.test.js +++ b/packages/astro/test/page-format.test.js @@ -3,50 +3,50 @@ import * as cheerio from 'cheerio'; import { loadFixture } from './test-utils.js'; describe('build.format', () => { - describe('directory', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - before(async () => { - fixture = await loadFixture({ - root: './fixtures/page-format/', - }); - }); + describe('directory', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + before(async () => { + fixture = await loadFixture({ + root: './fixtures/page-format/', + }); + }); - describe('Build', () => { - before(async () => { - await fixture.build(); - }); + describe('Build', () => { + before(async () => { + await fixture.build(); + }); - it('relative urls created point to sibling folders', async () => { - let html = await fixture.readFile('/nested/page/index.html'); - let $ = cheerio.load(html); - expect($('#another').attr('href')).to.equal('/nested/page/another/'); - }); - }); - }); + it('relative urls created point to sibling folders', async () => { + let html = await fixture.readFile('/nested/page/index.html'); + let $ = cheerio.load(html); + expect($('#another').attr('href')).to.equal('/nested/page/another/'); + }); + }); + }); describe('file', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - before(async () => { - fixture = await loadFixture({ - root: './fixtures/page-format/', + /** @type {import('./test-utils').Fixture} */ + let fixture; + before(async () => { + fixture = await loadFixture({ + root: './fixtures/page-format/', build: { format: 'file', }, - }); - }); + }); + }); - describe('Build', () => { - before(async () => { - await fixture.build(); - }); + describe('Build', () => { + before(async () => { + await fixture.build(); + }); - it('relative urls created point to sibling folders', async () => { - let html = await fixture.readFile('/nested/page.html'); - let $ = cheerio.load(html); - expect($('#another').attr('href')).to.equal('/nested/another/'); - }); - }); - }); + it('relative urls created point to sibling folders', async () => { + let html = await fixture.readFile('/nested/page.html'); + let $ = cheerio.load(html); + expect($('#another').attr('href')).to.equal('/nested/another/'); + }); + }); + }); });