diff --git a/.changeset/smart-carrots-build.md b/.changeset/smart-carrots-build.md new file mode 100644 index 000000000..a620af93e --- /dev/null +++ b/.changeset/smart-carrots-build.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/aws": patch +--- + +fix: make sure edge function entries are properly awaited diff --git a/packages/open-next/src/core/edgeFunctionHandler.ts b/packages/open-next/src/core/edgeFunctionHandler.ts index c539d554a..90d215661 100644 --- a/packages/open-next/src/core/edgeFunctionHandler.ts +++ b/packages/open-next/src/core/edgeFunctionHandler.ts @@ -17,9 +17,9 @@ export default async function edgeFunctionHandler( throw new Error(`No route found for ${request.url}`); } - const result = await self._ENTRIES[ - `middleware_${correspondingRoute.name}` - ].default({ + const entry = await self._ENTRIES[`middleware_${correspondingRoute.name}`]; + + const result = await entry.default({ page: correspondingRoute.page, request: { ...request, diff --git a/packages/open-next/src/types/global.ts b/packages/open-next/src/types/global.ts index ab29f78d7..5a89b5e22 100644 --- a/packages/open-next/src/types/global.ts +++ b/packages/open-next/src/types/global.ts @@ -37,13 +37,15 @@ export interface RequestData { signal: AbortSignal; } +interface Entry { + default: (props: { page: string; request: RequestData }) => Promise<{ + response: Response; + waitUntil: Promise; + }>; +} + interface Entries { - [k: string]: { - default: (props: { page: string; request: RequestData }) => Promise<{ - response: Response; - waitUntil: Promise; - }>; - }; + [k: string]: Entry | Promise; } export interface EdgeRoute {