vitePluginMiddleware() — astro Function Reference
Architecture documentation for the vitePluginMiddleware() function in vite-plugin.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD a82bc5dd_e403_0eb1_682e_072bcc35dd7c["vitePluginMiddleware()"] f79d9e6e_0575_c2b8_506e_ddbc799b5f07["vite-plugin.ts"] a82bc5dd_e403_0eb1_682e_072bcc35dd7c -->|defined in| f79d9e6e_0575_c2b8_506e_ddbc799b5f07 1c00b81f_3861_41f7_beb4_5a61d419bac3["createMiddlewareImports()"] a82bc5dd_e403_0eb1_682e_072bcc35dd7c -->|calls| 1c00b81f_3861_41f7_beb4_5a61d419bac3 style a82bc5dd_e403_0eb1_682e_072bcc35dd7c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/core/middleware/vite-plugin.ts lines 18–92
export function vitePluginMiddleware({ settings }: { settings: AstroSettings }): VitePlugin {
let resolvedMiddlewareId: string | undefined = undefined;
const hasIntegrationMiddleware =
settings.middlewares.pre.length > 0 || settings.middlewares.post.length > 0;
let userMiddlewareIsPresent = false;
return {
name: '@astro/plugin-middleware',
applyToEnvironment(environment) {
return (
environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.ssr ||
environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.astro ||
environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.prerender
);
},
resolveId: {
filter: {
id: new RegExp(`^${MIDDLEWARE_MODULE_ID}$`),
},
async handler() {
const middlewareId = await this.resolve(
`${decodeURI(settings.config.srcDir.pathname)}${MIDDLEWARE_PATH_SEGMENT_NAME}`,
);
userMiddlewareIsPresent = !!middlewareId;
if (middlewareId) {
resolvedMiddlewareId = middlewareId.id;
return MIDDLEWARE_RESOLVED_MODULE_ID;
} else if (hasIntegrationMiddleware) {
return MIDDLEWARE_RESOLVED_MODULE_ID;
} else {
return NOOP_MIDDLEWARE;
}
},
},
load: {
filter: {
id: new RegExp(`^(${NOOP_MIDDLEWARE}|${MIDDLEWARE_RESOLVED_MODULE_ID})$`),
},
async handler(id) {
if (id === NOOP_MIDDLEWARE) {
if (!userMiddlewareIsPresent && settings.config.i18n?.routing === 'manual') {
throw new AstroError(MissingMiddlewareForInternationalization);
}
return { code: 'export const onRequest = (_, next) => next()' };
}
if (id === MIDDLEWARE_RESOLVED_MODULE_ID) {
if (!userMiddlewareIsPresent && settings.config.i18n?.routing === 'manual') {
throw new AstroError(MissingMiddlewareForInternationalization);
}
const preMiddleware = createMiddlewareImports(settings.middlewares.pre, 'pre');
const postMiddleware = createMiddlewareImports(settings.middlewares.post, 'post');
const code = `
${
userMiddlewareIsPresent
? `import { onRequest as userOnRequest } from '${resolvedMiddlewareId}';`
: ''
}
import { sequence } from 'astro:middleware';
${preMiddleware.importsCode}${postMiddleware.importsCode}
export const onRequest = sequence(
${preMiddleware.sequenceCode}${preMiddleware.sequenceCode ? ',' : ''}
${userMiddlewareIsPresent ? `userOnRequest${postMiddleware.sequenceCode ? ',' : ''}` : ''}
${postMiddleware.sequenceCode}
);
`.trim();
return { code };
}
},
},
};
}
Domain
Subdomains
Source
Frequently Asked Questions
What does vitePluginMiddleware() do?
vitePluginMiddleware() is a function in the astro codebase, defined in packages/astro/src/core/middleware/vite-plugin.ts.
Where is vitePluginMiddleware() defined?
vitePluginMiddleware() is defined in packages/astro/src/core/middleware/vite-plugin.ts at line 18.
What does vitePluginMiddleware() call?
vitePluginMiddleware() calls 1 function(s): createMiddlewareImports.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free