generateEdgeMiddleware() — astro Function Reference
Architecture documentation for the generateEdgeMiddleware() function in middleware.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD b4b770e6_da09_a5bb_081c_1f50fe654915["generateEdgeMiddleware()"] 9aa7bc1a_4e9b_33e0_6f2b_0f9abc877693["middleware.ts"] b4b770e6_da09_a5bb_081c_1f50fe654915 -->|defined in| 9aa7bc1a_4e9b_33e0_6f2b_0f9abc877693 cee34067_eb44_0e9f_9bac_447168dac12c["edgeMiddlewareTemplate()"] b4b770e6_da09_a5bb_081c_1f50fe654915 -->|calls| cee34067_eb44_0e9f_9bac_447168dac12c style b4b770e6_da09_a5bb_081c_1f50fe654915 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/integrations/vercel/src/serverless/middleware.ts lines 27–92
export async function generateEdgeMiddleware(
astroMiddlewareEntryPointPath: URL,
root: URL,
vercelEdgeMiddlewareHandlerPath: URL,
outPath: URL,
middlewareSecret: string,
logger: AstroIntegrationLogger,
): Promise<URL> {
const code = edgeMiddlewareTemplate(
astroMiddlewareEntryPointPath,
vercelEdgeMiddlewareHandlerPath,
middlewareSecret,
logger,
);
// https://vercel.com/docs/concepts/functions/edge-middleware#create-edge-middleware
const bundledFilePath = fileURLToPath(outPath);
const esbuild = await import('esbuild');
try {
await esbuild.build({
stdin: {
contents: code,
resolveDir: fileURLToPath(root),
},
// Vercel Edge runtime targets ESNext, because Cloudflare Workers update v8 weekly
// https://github.com/vercel/vercel/blob/1006f2ae9d67ea4b3cbb1073e79d14d063d42436/packages/next/scripts/build-edge-function-template.js
target: 'esnext',
platform: 'browser',
// esbuild automatically adds the browser, import and default conditions
// https://esbuild.github.io/api/#conditions
// https://runtime-keys.proposal.wintercg.org/#edge-light
conditions: ['edge-light', 'workerd', 'worker'],
outfile: bundledFilePath,
allowOverwrite: true,
format: 'esm',
bundle: true,
minify: false,
// ensure node built-in modules are namespaced with `node:`
plugins: [
{
name: 'esbuild-namespace-node-built-in-modules',
setup(build) {
const filter = new RegExp(builtinModules.map((mod) => `(^${mod}$)`).join('|'));
build.onResolve(
{
filter,
},
(args) => ({
path: 'node:' + args.path,
external: true,
}),
);
},
},
],
});
} catch (err) {
if ((err as Error).message.includes('Could not resolve "node:')) {
logger.error(
`Vercel does not allow the use of Node.js built-ins in edge functions. Please ensure your middleware code and 3rd-party packages don’t use Node built-ins.`,
);
}
throw err;
}
return pathToFileURL(bundledFilePath);
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does generateEdgeMiddleware() do?
generateEdgeMiddleware() is a function in the astro codebase, defined in packages/integrations/vercel/src/serverless/middleware.ts.
Where is generateEdgeMiddleware() defined?
generateEdgeMiddleware() is defined in packages/integrations/vercel/src/serverless/middleware.ts at line 27.
What does generateEdgeMiddleware() call?
generateEdgeMiddleware() calls 1 function(s): edgeMiddlewareTemplate.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free