From 97488680ceea14a51853ba3fcbff016f8150833b Mon Sep 17 00:00:00 2001 From: Joni Vainio-Kaila Date: Tue, 10 Feb 2026 13:58:17 +0200 Subject: [PATCH] fix(package): Support re-exported metadata and generate functions Previously only `export const metadata` was detected. Now patterns like `export { metadata } from '...'` and multi-line variants are also supported. --- .../cli/commands/generate/getTemplateCompiler.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/package/src/cli/commands/generate/getTemplateCompiler.ts b/package/src/cli/commands/generate/getTemplateCompiler.ts index 1060459..fe5a18a 100644 --- a/package/src/cli/commands/generate/getTemplateCompiler.ts +++ b/package/src/cli/commands/generate/getTemplateCompiler.ts @@ -112,9 +112,11 @@ function withMetadata( originContents: string, config: ResolvedConfig, ) { - const staticMetadataRegExp = new RegExp(`export const metadata`); + const staticMetadataRegExp = new RegExp( + `export const metadata|export {[^}]*\\bmetadata\\b[^}]*}`, + ); const generateMetadataRegExp = new RegExp( - `export ((async )?function|const) generateMetadata`, + `export ((async )?function|const) generateMetadata|export {[^}]*\\bgenerateMetadata\\b[^}]*}`, ); const hasStaticMetadata = staticMetadataRegExp.test(originContents); const hasGenerateMetadata = generateMetadataRegExp.test(originContents); @@ -170,7 +172,9 @@ function withLanguageAlternatesMetadata( } function withReExport(template: string, originContents: string, name: string) { - const regExp = new RegExp(`export const ${name}`); + const regExp = new RegExp( + `export const ${name}|export {[^}]*\\b${name}\\b[^}]*}`, + ); if (!regExp.test(originContents)) return template; return template.concat( `\n\nexport { ${name} } from "${PATTERNS.relativePath}";`, @@ -182,7 +186,9 @@ function withGenerateFn( originContents: string, fnName: string, ) { - const regExp = new RegExp(`export ((async )?function|const) ${fnName}`); + const regExp = new RegExp( + `export ((async )?function|const) ${fnName}|export {[^}]*\\b${fnName}\\b[^}]*}`, + ); if (!regExp.test(originContents)) return template; const additionalParams = fnName === "generateMetadata" ? ", parent" : ""; const shouldSetLocale =