[ci] format
This commit is contained in:
parent
005d5bacd9
commit
a74f246333
4 changed files with 20 additions and 21 deletions
|
@ -202,10 +202,10 @@ export class App {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result.type === 'response') {
|
if (result.type === 'response') {
|
||||||
if(result.response.headers.get('X-Astro-Response') === 'Not-Found') {
|
if (result.response.headers.get('X-Astro-Response') === 'Not-Found') {
|
||||||
const fourOhFourRequest = new Request(new URL('/404', request.url));
|
const fourOhFourRequest = new Request(new URL('/404', request.url));
|
||||||
const fourOhFourRouteData = this.match(fourOhFourRequest);
|
const fourOhFourRouteData = this.match(fourOhFourRequest);
|
||||||
if(fourOhFourRouteData) {
|
if (fourOhFourRouteData) {
|
||||||
return this.render(fourOhFourRequest, fourOhFourRouteData);
|
return this.render(fourOhFourRequest, fourOhFourRouteData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,7 @@ function getHandlerFromModule(mod: EndpointHandler, method: string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Renders an endpoint request to completion, returning the body. */
|
/** Renders an endpoint request to completion, returning the body. */
|
||||||
export async function renderEndpoint(
|
export async function renderEndpoint(mod: EndpointHandler, request: Request, params: Params) {
|
||||||
mod: EndpointHandler,
|
|
||||||
request: Request,
|
|
||||||
params: Params
|
|
||||||
) {
|
|
||||||
const chosenMethod = request.method?.toLowerCase();
|
const chosenMethod = request.method?.toLowerCase();
|
||||||
const handler = getHandlerFromModule(mod, chosenMethod);
|
const handler = getHandlerFromModule(mod, chosenMethod);
|
||||||
if (!handler || typeof handler !== 'function') {
|
if (!handler || typeof handler !== 'function') {
|
||||||
|
@ -32,7 +28,7 @@ export async function renderEndpoint(
|
||||||
let response = new Response(null, {
|
let response = new Response(null, {
|
||||||
status: 404,
|
status: 404,
|
||||||
headers: {
|
headers: {
|
||||||
'X-Astro-Response': 'Not-Found'
|
'X-Astro-Response': 'Not-Found',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
return response;
|
return response;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import type http from 'http';
|
import type http from 'http';
|
||||||
import mime from 'mime';
|
import mime from 'mime';
|
||||||
import type * as vite from 'vite';
|
import type * as vite from 'vite';
|
||||||
import type { AstroConfig, ManifestData, SSRManifest } from '../@types/astro';
|
import type { AstroConfig, ManifestData } from '../@types/astro';
|
||||||
import type { SSROptions } from '../core/render/dev/index';
|
import type { SSROptions } from '../core/render/dev/index';
|
||||||
|
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
|
@ -28,8 +28,11 @@ interface AstroPluginOptions {
|
||||||
logging: LogOptions;
|
logging: LogOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
type AsyncReturnType<T extends (...args: any) => Promise<any>> =
|
type AsyncReturnType<T extends (...args: any) => Promise<any>> = T extends (
|
||||||
T extends (...args: any) => Promise<infer R> ? R : any
|
...args: any
|
||||||
|
) => Promise<infer R>
|
||||||
|
? R
|
||||||
|
: any;
|
||||||
|
|
||||||
function writeHtmlResponse(res: http.ServerResponse, statusCode: number, html: string) {
|
function writeHtmlResponse(res: http.ServerResponse, statusCode: number, html: string) {
|
||||||
res.writeHead(statusCode, {
|
res.writeHead(statusCode, {
|
||||||
|
@ -181,7 +184,7 @@ async function matchRoute(
|
||||||
viteServer: vite.ViteDevServer,
|
viteServer: vite.ViteDevServer,
|
||||||
logging: LogOptions,
|
logging: LogOptions,
|
||||||
manifest: ManifestData,
|
manifest: ManifestData,
|
||||||
config: AstroConfig,
|
config: AstroConfig
|
||||||
) {
|
) {
|
||||||
const matches = matchAllRoutes(pathname, manifest);
|
const matches = matchAllRoutes(pathname, manifest);
|
||||||
|
|
||||||
|
@ -273,7 +276,7 @@ async function handleRequest(
|
||||||
if (!(req.method === 'GET' || req.method === 'HEAD')) {
|
if (!(req.method === 'GET' || req.method === 'HEAD')) {
|
||||||
let bytes: Uint8Array[] = [];
|
let bytes: Uint8Array[] = [];
|
||||||
await new Promise((resolve) => {
|
await new Promise((resolve) => {
|
||||||
req.on('data', part => {
|
req.on('data', (part) => {
|
||||||
bytes.push(part);
|
bytes.push(part);
|
||||||
});
|
});
|
||||||
req.on('end', resolve);
|
req.on('end', resolve);
|
||||||
|
@ -292,7 +295,7 @@ async function handleRequest(
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
filePath = matchedRoute?.filePath;
|
filePath = matchedRoute?.filePath;
|
||||||
|
|
||||||
return await handleRoute(
|
return await handleRoute(
|
||||||
matchedRoute,
|
matchedRoute,
|
||||||
url,
|
url,
|
||||||
|
@ -307,7 +310,7 @@ async function handleRequest(
|
||||||
req,
|
req,
|
||||||
res
|
res
|
||||||
);
|
);
|
||||||
} catch(_err) {
|
} catch (_err) {
|
||||||
const err = fixViteErrorMessage(_err, viteServer, filePath);
|
const err = fixViteErrorMessage(_err, viteServer, filePath);
|
||||||
const errorWithMetadata = collectErrorMetadata(err);
|
const errorWithMetadata = collectErrorMetadata(err);
|
||||||
error(logging, null, msg.formatErrorMessage(errorWithMetadata));
|
error(logging, null, msg.formatErrorMessage(errorWithMetadata));
|
||||||
|
@ -376,7 +379,7 @@ async function handleRoute(
|
||||||
if (route.type === 'endpoint') {
|
if (route.type === 'endpoint') {
|
||||||
const result = await callEndpoint(options);
|
const result = await callEndpoint(options);
|
||||||
if (result.type === 'response') {
|
if (result.type === 'response') {
|
||||||
if(result.response.headers.get('X-Astro-Response') === 'Not-Found') {
|
if (result.response.headers.get('X-Astro-Response') === 'Not-Found') {
|
||||||
const fourOhFourRoute = await matchRoute(
|
const fourOhFourRoute = await matchRoute(
|
||||||
'/404',
|
'/404',
|
||||||
routeCache,
|
routeCache,
|
||||||
|
|
|
@ -28,14 +28,14 @@ describe('404 and 500 pages', () => {
|
||||||
|
|
||||||
it('Returns 404 when hitting an API route with the wrong method', async () => {
|
it('Returns 404 when hitting an API route with the wrong method', async () => {
|
||||||
let res = await fixture.fetch('/api/route', {
|
let res = await fixture.fetch('/api/route', {
|
||||||
method: 'PUT'
|
method: 'PUT',
|
||||||
});
|
});
|
||||||
let html = await res.text();
|
let html = await res.text();
|
||||||
let $ = cheerio.load(html);
|
let $ = cheerio.load(html);
|
||||||
expect($('h1').text()).to.equal(`Something went horribly wrong!`);
|
expect($('h1').text()).to.equal(`Something went horribly wrong!`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Production', () => {
|
describe('Production', () => {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
await fixture.build({});
|
await fixture.build({});
|
||||||
|
@ -50,7 +50,7 @@ describe('404 and 500 pages', () => {
|
||||||
const $ = cheerio.load(html);
|
const $ = cheerio.load(html);
|
||||||
expect($('h1').text()).to.equal('Something went horribly wrong!');
|
expect($('h1').text()).to.equal('Something went horribly wrong!');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('404 page returned when a route does not match and passing routeData', async () => {
|
it('404 page returned when a route does not match and passing routeData', async () => {
|
||||||
const app = await fixture.loadTestAdapterApp();
|
const app = await fixture.loadTestAdapterApp();
|
||||||
const request = new Request('http://example.com/some/fake/route');
|
const request = new Request('http://example.com/some/fake/route');
|
||||||
|
@ -61,7 +61,7 @@ describe('404 and 500 pages', () => {
|
||||||
const $ = cheerio.load(html);
|
const $ = cheerio.load(html);
|
||||||
expect($('h1').text()).to.equal('Something went horribly wrong!');
|
expect($('h1').text()).to.equal('Something went horribly wrong!');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('500 page returned when there is an error', async () => {
|
it('500 page returned when there is an error', async () => {
|
||||||
const app = await fixture.loadTestAdapterApp();
|
const app = await fixture.loadTestAdapterApp();
|
||||||
const request = new Request('http://example.com/causes-error');
|
const request = new Request('http://example.com/causes-error');
|
||||||
|
@ -75,7 +75,7 @@ describe('404 and 500 pages', () => {
|
||||||
it('Returns 404 when hitting an API route with the wrong method', async () => {
|
it('Returns 404 when hitting an API route with the wrong method', async () => {
|
||||||
const app = await fixture.loadTestAdapterApp();
|
const app = await fixture.loadTestAdapterApp();
|
||||||
const request = new Request('http://example.com/api/route', {
|
const request = new Request('http://example.com/api/route', {
|
||||||
method: 'PUT'
|
method: 'PUT',
|
||||||
});
|
});
|
||||||
const response = await app.render(request);
|
const response = await app.render(request);
|
||||||
expect(response.status).to.equal(404);
|
expect(response.status).to.equal(404);
|
||||||
|
|
Loading…
Reference in a new issue