File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed
Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ type NextApiModule =
1515 // ESM export
1616 default ?: EdgeRouteHandler ;
1717 middleware ?: EdgeRouteHandler ;
18+ proxy ?: EdgeRouteHandler ;
1819 }
1920 // CJS export
2021 | EdgeRouteHandler ;
@@ -29,6 +30,9 @@ let userProvidedDefaultHandler: EdgeRouteHandler | undefined = undefined;
2930if ( 'middleware' in userApiModule && typeof userApiModule . middleware === 'function' ) {
3031 // Handle when user defines via named ESM export: `export { middleware };`
3132 userProvidedNamedHandler = userApiModule . middleware ;
33+ } else if ( 'proxy' in userApiModule && typeof userApiModule . proxy === 'function' ) {
34+ // Handle when user defines via named ESM export (Next.js 16): `export { proxy };`
35+ userProvidedNamedHandler = userApiModule . proxy ;
3236} else if ( 'default' in userApiModule && typeof userApiModule . default === 'function' ) {
3337 // Handle when user defines via ESM export: `export default myFunction;`
3438 userProvidedDefaultHandler = userApiModule . default ;
@@ -40,6 +44,7 @@ if ('middleware' in userApiModule && typeof userApiModule.middleware === 'functi
4044export const middleware = userProvidedNamedHandler
4145 ? Sentry . wrapMiddlewareWithSentry ( userProvidedNamedHandler )
4246 : undefined ;
47+ export const proxy = userProvidedNamedHandler ? Sentry . wrapMiddlewareWithSentry ( userProvidedNamedHandler ) : undefined ;
4348export default userProvidedDefaultHandler ? Sentry . wrapMiddlewareWithSentry ( userProvidedDefaultHandler ) : undefined ;
4449
4550// Re-export anything exported by the page module we're wrapping. When processing this code, Rollup is smart enough to
Original file line number Diff line number Diff line change @@ -183,8 +183,11 @@ export function constructWebpackConfigFunction({
183183 ) ;
184184 } ;
185185
186- const possibleMiddlewareLocations = pageExtensions . map ( middlewareFileEnding => {
187- return path . join ( middlewareLocationFolder , `middleware.${ middlewareFileEnding } ` ) ;
186+ const possibleMiddlewareLocations = pageExtensions . flatMap ( middlewareFileEnding => {
187+ return [
188+ path . join ( middlewareLocationFolder , `middleware.${ middlewareFileEnding } ` ) ,
189+ path . join ( middlewareLocationFolder , `proxy.${ middlewareFileEnding } ` ) ,
190+ ] ;
188191 } ) ;
189192 const isMiddlewareResource = ( resourcePath : string ) : boolean => {
190193 const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath ( resourcePath ) ;
Original file line number Diff line number Diff line change @@ -129,6 +129,27 @@ describe('webpack loaders', () => {
129129 resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/middleware.tsx' ,
130130 expectedWrappingTargetKind : undefined ,
131131 } ,
132+ // Next.js 16+ renamed middleware to proxy
133+ {
134+ resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/src/proxy.js' ,
135+ expectedWrappingTargetKind : 'middleware' ,
136+ } ,
137+ {
138+ resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/src/proxy.ts' ,
139+ expectedWrappingTargetKind : 'middleware' ,
140+ } ,
141+ {
142+ resourcePath : './src/proxy.ts' ,
143+ expectedWrappingTargetKind : 'middleware' ,
144+ } ,
145+ {
146+ resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/src/proxy.tsx' ,
147+ expectedWrappingTargetKind : 'middleware' ,
148+ } ,
149+ {
150+ resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/proxy.tsx' ,
151+ expectedWrappingTargetKind : undefined ,
152+ } ,
132153 {
133154 resourcePath : '/Users/Maisey/projects/squirrelChasingSimulator/src/pages/api/testApiRoute.ts' ,
134155 expectedWrappingTargetKind : 'api-route' ,
You can’t perform that action at this time.
0 commit comments