edgeMiddlewareTemplate() — astro Function Reference
Architecture documentation for the edgeMiddlewareTemplate() function in middleware.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD cee34067_eb44_0e9f_9bac_447168dac12c["edgeMiddlewareTemplate()"] 9aa7bc1a_4e9b_33e0_6f2b_0f9abc877693["middleware.ts"] cee34067_eb44_0e9f_9bac_447168dac12c -->|defined in| 9aa7bc1a_4e9b_33e0_6f2b_0f9abc877693 b4b770e6_da09_a5bb_081c_1f50fe654915["generateEdgeMiddleware()"] b4b770e6_da09_a5bb_081c_1f50fe654915 -->|calls| cee34067_eb44_0e9f_9bac_447168dac12c style cee34067_eb44_0e9f_9bac_447168dac12c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/integrations/vercel/src/serverless/middleware.ts lines 94–150
function edgeMiddlewareTemplate(
astroMiddlewareEntryPointPath: URL,
vercelEdgeMiddlewareHandlerPath: URL,
middlewareSecret: string,
logger: AstroIntegrationLogger,
) {
const middlewarePath = JSON.stringify(
fileURLToPath(astroMiddlewareEntryPointPath).replace(/\\/g, '/'),
);
const filePathEdgeMiddleware = fileURLToPath(vercelEdgeMiddlewareHandlerPath);
let handlerTemplateImport = '';
let handlerTemplateCall = '{}';
if (existsSync(filePathEdgeMiddleware + '.js') || existsSync(filePathEdgeMiddleware + '.ts')) {
logger.warn(
'Usage of `vercel-edge-middleware.js` is deprecated. You can now use the `waitUntil(promise)` function directly as `ctx.locals.waitUntil(promise)`.',
);
const stringified = JSON.stringify(filePathEdgeMiddleware.replace(/\\/g, '/'));
handlerTemplateImport = `import handler from ${stringified}`;
handlerTemplateCall = `await handler({ request, context })`;
} else {
}
return `
${handlerTemplateImport}
import { onRequest } from ${middlewarePath};
import { createContext, trySerializeLocals } from 'astro/middleware';
export default async function middleware(request, context) {
const ctx = createContext({
request,
params: {}
});
Object.assign(ctx.locals, { vercel: { edge: context }, ...${handlerTemplateCall} });
const { origin } = new URL(request.url);
const next = async () => {
const { vercel, ...locals } = ctx.locals;
const response = await fetch(new URL('/${NODE_PATH}', request.url), {
headers: {
...Object.fromEntries(request.headers.entries()),
'${ASTRO_MIDDLEWARE_SECRET_HEADER}': '${middlewareSecret}',
'${ASTRO_PATH_HEADER}': request.url.replace(origin, ''),
'${ASTRO_LOCALS_HEADER}': trySerializeLocals(locals)
}
});
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: response.headers,
});
};
const response = await onRequest(ctx, next);
// Append cookies from Astro.cookies
for(const setCookieHeaderValue of ctx.cookies.headers()) {
response.headers.append('set-cookie', setCookieHeaderValue);
}
return response;
}`;
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does edgeMiddlewareTemplate() do?
edgeMiddlewareTemplate() is a function in the astro codebase, defined in packages/integrations/vercel/src/serverless/middleware.ts.
Where is edgeMiddlewareTemplate() defined?
edgeMiddlewareTemplate() is defined in packages/integrations/vercel/src/serverless/middleware.ts at line 94.
What calls edgeMiddlewareTemplate()?
edgeMiddlewareTemplate() is called by 1 function(s): generateEdgeMiddleware.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free