diff options
| author | 2022-10-12 21:27:56 +0000 | |
|---|---|---|
| committer | 2022-10-12 21:27:56 +0000 | |
| commit | 575bf9205e7b5875c6b95d49339ff448f59eaad4 (patch) | |
| tree | 5e14d483fea818032722fbe8a8ac06944a41a337 /packages/integrations/node/src | |
| parent | e55af8a23233b6335f45b7a04b9d026990fb616c (diff) | |
| download | astro-575bf9205e7b5875c6b95d49339ff448f59eaad4.tar.gz astro-575bf9205e7b5875c6b95d49339ff448f59eaad4.tar.zst astro-575bf9205e7b5875c6b95d49339ff448f59eaad4.zip | |
[ci] format
Diffstat (limited to 'packages/integrations/node/src')
| -rw-r--r-- | packages/integrations/node/src/http-server.ts | 33 | ||||
| -rw-r--r-- | packages/integrations/node/src/index.ts | 10 | ||||
| -rw-r--r-- | packages/integrations/node/src/middleware.ts | 8 | ||||
| -rw-r--r-- | packages/integrations/node/src/preview.ts | 40 | ||||
| -rw-r--r-- | packages/integrations/node/src/server.ts | 8 | ||||
| -rw-r--r-- | packages/integrations/node/src/standalone.ts | 21 | ||||
| -rw-r--r-- | packages/integrations/node/src/types.ts | 5 | 
7 files changed, 69 insertions, 56 deletions
| diff --git a/packages/integrations/node/src/http-server.ts b/packages/integrations/node/src/http-server.ts index 34192c5f9..98cde3728 100644 --- a/packages/integrations/node/src/http-server.ts +++ b/packages/integrations/node/src/http-server.ts @@ -1,8 +1,8 @@  import fs from 'fs';  import http from 'http';  import https from 'https'; -import { fileURLToPath } from 'url';  import send from 'send'; +import { fileURLToPath } from 'url';  interface CreateServerOptions {  	client: URL; @@ -10,9 +10,12 @@ interface CreateServerOptions {  	host: string | undefined;  } -export function createServer({ client, port, host }: CreateServerOptions, handler: http.RequestListener) { +export function createServer( +	{ client, port, host }: CreateServerOptions, +	handler: http.RequestListener +) {  	const listener: http.RequestListener = (req, res) => { -		if(req.url) { +		if (req.url) {  			const fileURL = new URL('.' + req.url, client);  			const stream = send(req, fileURLToPath(fileURL), { @@ -21,8 +24,8 @@ export function createServer({ client, port, host }: CreateServerOptions, handle  			let forwardError = false; -			stream.on('error', err => { -				if(forwardError) { +			stream.on('error', (err) => { +				if (forwardError) {  					// eslint-disable-next-line no-console  					console.error(err.toString());  					res.writeHead(500); @@ -42,14 +45,18 @@ export function createServer({ client, port, host }: CreateServerOptions, handle  		}  	}; -	let httpServer: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | -		https.Server<typeof http.IncomingMessage, typeof http.ServerResponse>; -	 -	if(process.env.SERVER_CERT_PATH && process.env.SERVER_KEY_PATH) { -		httpServer = https.createServer({ -			key: fs.readFileSync(process.env.SERVER_KEY_PATH), -			cert: fs.readFileSync(process.env.SERVER_CERT_PATH), -		}, listener); +	let httpServer: +		| http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> +		| https.Server<typeof http.IncomingMessage, typeof http.ServerResponse>; + +	if (process.env.SERVER_CERT_PATH && process.env.SERVER_KEY_PATH) { +		httpServer = https.createServer( +			{ +				key: fs.readFileSync(process.env.SERVER_KEY_PATH), +				cert: fs.readFileSync(process.env.SERVER_CERT_PATH), +			}, +			listener +		);  	} else {  		httpServer = http.createServer(listener);  	} diff --git a/packages/integrations/node/src/index.ts b/packages/integrations/node/src/index.ts index 80dfacdab..095f0b6b0 100644 --- a/packages/integrations/node/src/index.ts +++ b/packages/integrations/node/src/index.ts @@ -7,13 +7,13 @@ export function getAdapter(options: Options): AstroAdapter {  		serverEntrypoint: '@astrojs/node/server.js',  		previewEntrypoint: '@astrojs/node/preview.js',  		exports: ['handler'], -		args: options +		args: options,  	};  }  export default function createIntegration(userOptions: UserOptions): AstroIntegration { -	if(!userOptions?.mode) { -		throw new Error(`[@astrojs/node] Setting the 'mode' option is required.`) +	if (!userOptions?.mode) { +		throw new Error(`[@astrojs/node] Setting the 'mode' option is required.`);  	}  	let needsBuildConfig = false; @@ -38,11 +38,11 @@ export default function createIntegration(userOptions: UserOptions): AstroIntegr  			},  			'astro:build:start': ({ buildConfig }) => {  				// Backwards compat -				if(needsBuildConfig) { +				if (needsBuildConfig) {  					_options.client = buildConfig.client.toString();  					_options.server = buildConfig.server.toString();  				} -			} +			},  		},  	};  } diff --git a/packages/integrations/node/src/middleware.ts b/packages/integrations/node/src/middleware.ts index 772461f2a..a1058399d 100644 --- a/packages/integrations/node/src/middleware.ts +++ b/packages/integrations/node/src/middleware.ts @@ -2,8 +2,12 @@ import type { NodeApp } from 'astro/app/node';  import type { IncomingMessage, ServerResponse } from 'http';  import type { Readable } from 'stream'; -export default function(app: NodeApp) { -	return async function(req: IncomingMessage, res: ServerResponse, next?: (err?: unknown) => void) { +export default function (app: NodeApp) { +	return async function ( +		req: IncomingMessage, +		res: ServerResponse, +		next?: (err?: unknown) => void +	) {  		try {  			const route = app.match(req); diff --git a/packages/integrations/node/src/preview.ts b/packages/integrations/node/src/preview.ts index 33c2f18e2..443befa19 100644 --- a/packages/integrations/node/src/preview.ts +++ b/packages/integrations/node/src/preview.ts @@ -1,28 +1,27 @@  import type { CreatePreviewServer } from 'astro'; -import type { createExports } from './server';  import http from 'http';  import { fileURLToPath } from 'url';  import { createServer } from './http-server.js'; +import type { createExports } from './server'; -const preview: CreatePreviewServer = async function({ -	client, -	serverEntrypoint, -	host, -	port, -}) { +const preview: CreatePreviewServer = async function ({ client, serverEntrypoint, host, port }) {  	type ServerModule = ReturnType<typeof createExports>;  	type MaybeServerModule = Partial<ServerModule>;  	let ssrHandler: ServerModule['handler'];  	try {  		process.env.ASTRO_NODE_AUTOSTART = 'disabled';  		const ssrModule: MaybeServerModule = await import(serverEntrypoint.toString()); -		if(typeof ssrModule.handler === 'function') { +		if (typeof ssrModule.handler === 'function') {  			ssrHandler = ssrModule.handler;  		} else { -			throw new Error(`The server entrypoint doesn't have a handler. Are you sure this is the right file?`); +			throw new Error( +				`The server entrypoint doesn't have a handler. Are you sure this is the right file?` +			);  		} -	} catch(_err) { -		throw new Error(`The server entrypoint ${fileURLToPath} does not exist. Have you ran a build yet?`); +	} catch (_err) { +		throw new Error( +			`The server entrypoint ${fileURLToPath} does not exist. Have you ran a build yet?` +		);  	}  	const handler: http.RequestListener = (req, res) => { @@ -37,18 +36,19 @@ const preview: CreatePreviewServer = async function({  		});  	}; -	const server = createServer({ -		client, -		port, -		host, -	}, handler); +	const server = createServer( +		{ +			client, +			port, +			host, +		}, +		handler +	);  	// eslint-disable-next-line no-console  	console.log(`Preview server listening on http://${host}:${port}`);  	return server; -} - -export { -	preview as default  }; + +export { preview as default }; diff --git a/packages/integrations/node/src/server.ts b/packages/integrations/node/src/server.ts index 202e66b7e..9cff04cf5 100644 --- a/packages/integrations/node/src/server.ts +++ b/packages/integrations/node/src/server.ts @@ -1,9 +1,9 @@ -import type { SSRManifest } from 'astro'; -import type { Options } from './types';  import { polyfill } from '@astrojs/webapi'; +import type { SSRManifest } from 'astro';  import { NodeApp } from 'astro/app/node';  import middleware from './middleware.js';  import startServer from './standalone.js'; +import type { Options } from './types';  polyfill(globalThis, {  	exclude: 'window document', @@ -12,12 +12,12 @@ polyfill(globalThis, {  export function createExports(manifest: SSRManifest) {  	const app = new NodeApp(manifest);  	return { -		handler: middleware(app) +		handler: middleware(app),  	};  }  export function start(manifest: SSRManifest, options: Options) { -	if(options.mode !== 'standalone' || process.env.ASTRO_NODE_AUTOSTART === 'disabled') { +	if (options.mode !== 'standalone' || process.env.ASTRO_NODE_AUTOSTART === 'disabled') {  		return;  	} diff --git a/packages/integrations/node/src/standalone.ts b/packages/integrations/node/src/standalone.ts index 8fef96ed5..e0435a2ea 100644 --- a/packages/integrations/node/src/standalone.ts +++ b/packages/integrations/node/src/standalone.ts @@ -1,15 +1,15 @@  import type { NodeApp } from 'astro/app/node'; -import type { Options } from './types';  import path from 'path';  import { fileURLToPath } from 'url'; -import middleware from './middleware.js';  import { createServer } from './http-server.js'; +import middleware from './middleware.js'; +import type { Options } from './types';  function resolvePaths(options: Options) {  	const clientURLRaw = new URL(options.client);  	const serverURLRaw = new URL(options.server);  	const rel = path.relative(fileURLToPath(serverURLRaw), fileURLToPath(clientURLRaw)); -	 +  	const serverEntryURL = new URL(import.meta.url);  	const clientURL = new URL(appendForwardSlash(rel), serverEntryURL); @@ -35,16 +35,19 @@ export function getResolvedHostForHttpServer(host: string | boolean) {  }  export default function startServer(app: NodeApp, options: Options) { -	const port = process.env.PORT ? Number(process.env.port) : (options.port ?? 8080); +	const port = process.env.PORT ? Number(process.env.port) : options.port ?? 8080;  	const { client } = resolvePaths(options);  	const handler = middleware(app);  	const host = getResolvedHostForHttpServer(options.host); -	const server = createServer({ -		client, -		port, -		host, -	}, handler); +	const server = createServer( +		{ +			client, +			port, +			host, +		}, +		handler +	);  	// eslint-disable-next-line no-console  	console.log(`Server listening on http://${host}:${port}`); diff --git a/packages/integrations/node/src/types.ts b/packages/integrations/node/src/types.ts index aaf3be942..2a9ecc2a1 100644 --- a/packages/integrations/node/src/types.ts +++ b/packages/integrations/node/src/types.ts @@ -1,12 +1,11 @@ -  export interface UserOptions {  	/**  	 * Specifies the mode that the adapter builds to. -	 *  +	 *  	 * - 'middleware' - Build to middleware, to be used within another Node.js server, such as Express.  	 * - 'standalone' - Build to a standalone server. The server starts up just by running the built script.  	 */ -	 mode: 'middleware' | 'standalone'; +	mode: 'middleware' | 'standalone';  }  export interface Options extends UserOptions { | 
