@@ -14,6 +14,27 @@ function errorOnBadHandler(resourcePath: string) {
14
14
`
15
15
}
16
16
17
+ /* re-export the userland route configs */
18
+ async function createReExportsCode (
19
+ resourcePath : string ,
20
+ loaderContext : webpack . LoaderContext < any >
21
+ ) {
22
+ const exportNames = await getLoaderModuleNamedExports (
23
+ resourcePath ,
24
+ loaderContext
25
+ )
26
+ // Re-export configs but avoid conflicted exports
27
+ const reExportNames = exportNames . filter (
28
+ ( name ) => name !== 'default' && name !== 'generateSitemaps'
29
+ )
30
+
31
+ return reExportNames . length > 0
32
+ ? `export { ${ reExportNames . join ( ', ' ) } } from ${ JSON . stringify (
33
+ resourcePath
34
+ ) } \n`
35
+ : ''
36
+ }
37
+
17
38
const cacheHeader = {
18
39
none : 'no-cache, no-store' ,
19
40
longCache : 'public, immutable, no-transform, max-age=31536000' ,
@@ -85,7 +106,10 @@ export const dynamic = 'force-static'
85
106
return code
86
107
}
87
108
88
- function getDynamicTextRouteCode ( resourcePath : string ) {
109
+ async function getDynamicTextRouteCode (
110
+ resourcePath : string ,
111
+ loaderContext : webpack . LoaderContext < any >
112
+ ) {
89
113
return `\
90
114
/* dynamic asset route */
91
115
import { NextResponse } from 'next/server'
@@ -96,6 +120,7 @@ const contentType = ${JSON.stringify(getContentType(resourcePath))}
96
120
const fileType = ${ JSON . stringify ( getFilenameAndExtension ( resourcePath ) . name ) }
97
121
98
122
${ errorOnBadHandler ( resourcePath ) }
123
+ ${ await createReExportsCode ( resourcePath , loaderContext ) }
99
124
100
125
export async function GET() {
101
126
const data = await handler()
@@ -112,7 +137,10 @@ export async function GET() {
112
137
}
113
138
114
139
// <metadata-image>/[id]/route.js
115
- function getDynamicImageRouteCode ( resourcePath : string ) {
140
+ async function getDynamicImageRouteCode (
141
+ resourcePath : string ,
142
+ loaderContext : webpack . LoaderContext < any >
143
+ ) {
116
144
return `\
117
145
/* dynamic image route */
118
146
import { NextResponse } from 'next/server'
@@ -124,6 +152,7 @@ const handler = imageModule.default
124
152
const generateImageMetadata = imageModule.generateImageMetadata
125
153
126
154
${ errorOnBadHandler ( resourcePath ) }
155
+ ${ await createReExportsCode ( resourcePath , loaderContext ) }
127
156
128
157
export async function GET(_, ctx) {
129
158
const { __metadata_id__, ...params } = ctx.params || {}
@@ -162,10 +191,6 @@ async function getDynamicSitemapRouteCode(
162
191
resourcePath ,
163
192
loaderContext
164
193
)
165
- // Re-export configs but avoid conflicted exports
166
- const reExportNames = exportNames . filter (
167
- ( name ) => name !== 'default' && name !== 'generateSitemaps'
168
- )
169
194
170
195
const hasGenerateSitemaps = exportNames . includes ( 'generateSitemaps' )
171
196
@@ -195,15 +220,7 @@ const contentType = ${JSON.stringify(getContentType(resourcePath))}
195
220
const fileType = ${ JSON . stringify ( getFilenameAndExtension ( resourcePath ) . name ) }
196
221
197
222
${ errorOnBadHandler ( resourcePath ) }
198
-
199
- ${ '' /* re-export the userland route configs */ }
200
- ${
201
- reExportNames . length > 0
202
- ? `export { ${ reExportNames . join ( ', ' ) } } from ${ JSON . stringify (
203
- resourcePath
204
- ) } \n`
205
- : ''
206
- }
223
+ ${ await createReExportsCode ( resourcePath , loaderContext ) }
207
224
208
225
export async function GET(_, ctx) {
209
226
const { __metadata_id__: id, ...params } = ctx.params || {}
@@ -253,11 +270,11 @@ const nextMetadataRouterLoader: webpack.LoaderDefinitionFunction<MetadataRouteLo
253
270
let code = ''
254
271
if ( isDynamicRouteExtension === '1' ) {
255
272
if ( fileBaseName === 'robots' || fileBaseName === 'manifest' ) {
256
- code = getDynamicTextRouteCode ( filePath )
273
+ code = await getDynamicTextRouteCode ( filePath , this )
257
274
} else if ( fileBaseName === 'sitemap' ) {
258
275
code = await getDynamicSitemapRouteCode ( filePath , this )
259
276
} else {
260
- code = getDynamicImageRouteCode ( filePath )
277
+ code = await getDynamicImageRouteCode ( filePath , this )
261
278
}
262
279
} else {
263
280
code = await getStaticAssetRouteCode ( filePath , fileBaseName )
0 commit comments