fix(routing): incorrect assumption when loading the middleware (#12109)

This commit is contained in:
Emanuele Stoppa 2024-10-03 14:38:23 +01:00 committed by GitHub
parent 918953bd09
commit ea225585fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 2 deletions

View file

@ -0,0 +1,7 @@
---
'astro': patch
---
Fixes a regression that was introduced by an internal refactor of how the middleware is loaded by the Astro application. The regression was introduced by [#11550](https://github.com/withastro/astro/pull/11550).
When the edge middleware feature is opted in, Astro removes the middleware function from the SSR manifest, and this wasn't taken into account during the refactor.

View file

@ -68,7 +68,7 @@ export type SSRManifest = {
serverIslandNameMap?: Map<string, string>;
key: Promise<CryptoKey>;
i18n: SSRManifestI18n | undefined;
middleware: () => Promise<AstroMiddlewareInstance> | AstroMiddlewareInstance;
middleware?: () => Promise<AstroMiddlewareInstance> | AstroMiddlewareInstance;
checkOrigin: boolean;
// TODO: remove experimental prefix
experimentalEnvGetSecretEnabled: boolean;

View file

@ -109,7 +109,10 @@ export abstract class Pipeline {
async getMiddleware(): Promise<MiddlewareHandler> {
if (this.resolvedMiddleware) {
return this.resolvedMiddleware;
} else {
}
// The middleware can be undefined when using edge middleware.
// This is set to undefined by the plugin-ssr.ts
else if (this.middleware) {
const middlewareInstance = await this.middleware();
const onRequest = middlewareInstance.onRequest ?? NOOP_MIDDLEWARE_FN;
if (this.manifest.checkOrigin) {
@ -118,6 +121,9 @@ export abstract class Pipeline {
this.resolvedMiddleware = onRequest;
}
return this.resolvedMiddleware;
} else {
this.resolvedMiddleware = NOOP_MIDDLEWARE_FN;
return this.resolvedMiddleware
}
}
}