Skip to content

Commit ea9d397

Browse files
committed
review fix
1 parent c008911 commit ea9d397

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
lines changed

packages/open-next/src/adapters/middleware.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ import {
1414
resolveQueue,
1515
resolveTagCache,
1616
} from "../core/resolve";
17-
import routingHandler from "../core/routingHandler";
17+
import routingHandler, {
18+
INTERNAL_HEADER_INITIAL_PATH,
19+
INTERNAL_HEADER_RESOLVED_ROUTE,
20+
INTERNAL_HEADER_ROUTE_TYPE,
21+
} from "../core/routingHandler";
1822

1923
globalThis.internalFetch = fetch;
2024
globalThis.__openNextAls = new AsyncLocalStorage();
@@ -61,9 +65,9 @@ const defaultHandler = async (
6165
...result.internalEvent,
6266
headers: {
6367
...result.internalEvent.headers,
64-
"x-opennext-initial-path": internalEvent.rawPath,
65-
"x-opennext-resolved-route": result.resolvedRoute ?? "",
66-
"x-opennext-route-type": result.routeType ?? "",
68+
[INTERNAL_HEADER_INITIAL_PATH]: internalEvent.rawPath,
69+
[INTERNAL_HEADER_RESOLVED_ROUTE]: result.resolvedRoute ?? "",
70+
[INTERNAL_HEADER_ROUTE_TYPE]: result.routeType ?? "",
6771
},
6872
},
6973
isExternalRewrite: result.isExternalRewrite,

packages/open-next/src/core/requestHandler.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import { debug, error, warn } from "../adapters/logger";
1515
import { patchAsyncStorage } from "./patchAsyncStorage";
1616
import { convertRes, createServerResponse } from "./routing/util";
1717
import routingHandler, {
18-
INTERNAL_HEADER_PREFIX,
18+
INTERNAL_HEADER_INITIAL_PATH,
19+
INTERNAL_HEADER_RESOLVED_ROUTE,
20+
INTERNAL_HEADER_ROUTE_TYPE,
1921
MIDDLEWARE_HEADER_PREFIX,
2022
MIDDLEWARE_HEADER_PREFIX_LEN,
2123
} from "./routingHandler";
@@ -39,20 +41,23 @@ export async function openNextHandler(
3941
}
4042
debug("internalEvent", internalEvent);
4143

44+
// These 3 will get overwritten by the routing handler if not using an external middleware
45+
const internalHeaders = {
46+
initialPath:
47+
internalEvent.headers[INTERNAL_HEADER_INITIAL_PATH] ??
48+
internalEvent.rawPath,
49+
resolvedRoute: internalEvent.headers[INTERNAL_HEADER_RESOLVED_ROUTE],
50+
routeType: internalEvent.headers[INTERNAL_HEADER_ROUTE_TYPE] as
51+
| RouteType
52+
| undefined,
53+
};
54+
4255
let routingResult: InternalResult | RoutingResult = {
4356
internalEvent,
4457
isExternalRewrite: false,
4558
origin: false,
4659
isISR: false,
47-
// These 3 will get overwritten by the routing handler if not using an external middleware
48-
initialPath:
49-
internalEvent.headers[`${INTERNAL_HEADER_PREFIX}-initial-path`] ??
50-
internalEvent.rawPath,
51-
resolvedRoute:
52-
internalEvent.headers[`${INTERNAL_HEADER_PREFIX}-resolved-route`],
53-
routeType: internalEvent.headers[
54-
`${INTERNAL_HEADER_PREFIX}-route-type`
55-
] as RouteType | undefined,
60+
...internalHeaders,
5661
};
5762

5863
//#override withRouting

packages/open-next/src/core/routingHandler.ts

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import { handleMiddleware } from "./routing/middleware";
2626

2727
export const MIDDLEWARE_HEADER_PREFIX = "x-middleware-response-";
2828
export const INTERNAL_HEADER_PREFIX = "x-opennext-";
29+
export const INTERNAL_HEADER_INITIAL_PATH = `${INTERNAL_HEADER_PREFIX}initial-path`;
30+
export const INTERNAL_HEADER_RESOLVED_ROUTE = `${INTERNAL_HEADER_PREFIX}resolved-route`;
31+
export const INTERNAL_HEADER_ROUTE_TYPE = `${INTERNAL_HEADER_PREFIX}route-type`;
2932
export const MIDDLEWARE_HEADER_PREFIX_LEN = MIDDLEWARE_HEADER_PREFIX.length;
3033

3134
// Add the locale prefix to the regex so we correctly match the rawPath
@@ -191,7 +194,7 @@ export default async function routingHandler(
191194
const foundDynamicRoute = dynamicRouteMatcher(internalEvent.rawPath);
192195
const isDynamicRoute = !isExternalRewrite && Boolean(foundDynamicRoute);
193196

194-
if (!isDynamicRoute && !isStaticRoute && !isExternalRewrite) {
197+
if (!(isDynamicRoute || isStaticRoute || isExternalRewrite)) {
195198
// Fallback rewrite to be applied
196199
const fallbackRewrites = handleRewrites(
197200
internalEvent,
@@ -216,12 +219,14 @@ export default async function routingHandler(
216219
// If we still haven't found a route, we show the 404 page
217220
// We need to ensure that rewrites are applied before showing the 404 page
218221
if (
219-
!isRouteFoundBeforeAllRewrites &&
220-
!isApiRoute &&
221-
!isNextImageRoute &&
222-
// We need to check again once all rewrites have been applied
223-
!staticRouteMatcher(internalEvent.rawPath) &&
224-
!dynamicRouteMatcher(internalEvent.rawPath)
222+
!(
223+
isRouteFoundBeforeAllRewrites ||
224+
isApiRoute ||
225+
isNextImageRoute ||
226+
// We need to check again once all rewrites have been applied
227+
staticRouteMatcher(internalEvent.rawPath) ||
228+
dynamicRouteMatcher(internalEvent.rawPath)
229+
)
225230
) {
226231
internalEvent = {
227232
...internalEvent,
@@ -260,20 +265,20 @@ export default async function routingHandler(
260265
...nextHeaders,
261266
});
262267

263-
const resolvedRoute = foundStaticRoute
264-
? foundStaticRoute.page
265-
: foundDynamicRoute
266-
? foundDynamicRoute.page
267-
: undefined;
268+
let resolvedRoute: string | undefined;
269+
let routeType: RouteType | undefined;
270+
271+
if (foundStaticRoute) {
272+
resolvedRoute = foundStaticRoute.page;
273+
routeType = foundStaticRoute.routeType;
274+
} else if (foundDynamicRoute) {
275+
resolvedRoute = foundDynamicRoute.page;
276+
routeType = foundDynamicRoute.routeType;
277+
} else if (isApiRoute) {
278+
// For /api paths we assume that they're route types
279+
routeType = "route";
280+
}
268281

269-
const routeType = foundStaticRoute
270-
? foundStaticRoute.routeType
271-
: foundDynamicRoute
272-
? foundDynamicRoute.routeType
273-
: // For /api paths we assume that they're route types
274-
internalEvent.rawPath.startsWith("/api")
275-
? "route"
276-
: undefined;
277282
return {
278283
internalEvent,
279284
isExternalRewrite,

0 commit comments

Comments
 (0)