Home / File/ middleware.ts — astro Source File

middleware.ts — astro Source File

Architecture documentation for middleware.ts, a typescript file in the astro codebase. 3 imports, 0 dependents.

File typescript CoreAstro CoreMiddleware 3 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  f7144460_0a42_f3e4_9276_46af39d36dba["middleware.ts"]
  0dad751c_0394_f4dd_ca31_364000581878["./serve-app.js"]
  f7144460_0a42_f3e4_9276_46af39d36dba --> 0dad751c_0394_f4dd_ca31_364000581878
  b384cf30_390d_6db6_4724_be96d46e50ef["./types.js"]
  f7144460_0a42_f3e4_9276_46af39d36dba --> b384cf30_390d_6db6_4724_be96d46e50ef
  8d666858_ab9a_2697_4536_5cb6ce038643["node"]
  f7144460_0a42_f3e4_9276_46af39d36dba --> 8d666858_ab9a_2697_4536_5cb6ce038643
  style f7144460_0a42_f3e4_9276_46af39d36dba fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { NodeApp } from 'astro/app/node';
import { createAppHandler } from './serve-app.js';
import type { Options, RequestHandler } from './types.js';

/**
 * Creates a middleware that can be used with Express, Connect, etc.
 *
 * Similar to `createAppHandler` but can additionally be placed in the express
 * chain as an error middleware.
 *
 * https://expressjs.com/en/guide/using-middleware.html#middleware.error-handling
 */
export default function createMiddleware(app: NodeApp, options: Options): RequestHandler {
	const handler = createAppHandler(app, options);
	const logger = app.getAdapterLogger();
	// using spread args because express trips up if the function's
	// stringified body includes req, res, next, locals directly
	return async (...args) => {
		// assume normal invocation at first
		const [req, res, next, locals] = args;
		// short circuit if it is an error invocation
		if (req instanceof Error) {
			const error = req;
			if (next) {
				return next(error);
			} else {
				throw error;
			}
		}
		try {
			await handler(req, res, next, locals);
		} catch (err) {
			logger.error(`Could not render ${req.url}`);
			console.error(err);
			if (!res.headersSent) {
				res.writeHead(500, `Server error`);
				res.end();
			}
		}
	};
}

Domain

Subdomains

Functions

Dependencies

  • ./serve-app.js
  • ./types.js
  • node

Frequently Asked Questions

What does middleware.ts do?
middleware.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, CoreMiddleware subdomain.
What functions are defined in middleware.ts?
middleware.ts defines 1 function(s): createMiddleware.
What does middleware.ts depend on?
middleware.ts imports 3 module(s): ./serve-app.js, ./types.js, node.
Where is middleware.ts in the architecture?
middleware.ts is located at packages/integrations/node/src/middleware.ts (domain: CoreAstro, subdomain: CoreMiddleware, directory: packages/integrations/node/src).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free