From d5784bdfccff3495cdb0f65a3375b3ded3c00045 Mon Sep 17 00:00:00 2001 From: Sreetam Das Date: Mon, 29 Aug 2022 15:08:18 +0530 Subject: [PATCH 1/2] fix: check if URL with replaced defaultLocale in notFoundRoutes We currently replace the defaultLocale (when i18n is enabled) in the urlSet (with the help of a regex), but URLs in notFoundRoutes are not replaced. This would cause notFound routes on the defaultLocale to be missed when filtering. Add additional check to check if url with edfaultLocale replacedd is included in notFoundRoutes --- packages/next-sitemap/src/builders/url-set-builder.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/next-sitemap/src/builders/url-set-builder.ts b/packages/next-sitemap/src/builders/url-set-builder.ts index a1deed20..eea2949f 100644 --- a/packages/next-sitemap/src/builders/url-set-builder.ts +++ b/packages/next-sitemap/src/builders/url-set-builder.ts @@ -79,8 +79,9 @@ export class UrlSetBuilder { let urlSet = allKeys.filter((x) => !isNextInternalUrl(x)) // Remove default locale if i18n is enabled + let defaultLocale if (i18n) { - const { defaultLocale } = i18n + defaultLocale = i18n.defaultLocale const replaceDefaultLocale = createDefaultLocaleReplace(defaultLocale) urlSet = urlSet.map(replaceDefaultLocale) } @@ -95,7 +96,12 @@ export class UrlSetBuilder { // Remove routes which don't exist const notFoundRoutes = (this.manifest?.preRender?.notFoundRoutes ?? []) as string[] - urlSet = urlSet.filter((url) => !notFoundRoutes.includes(url)) + urlSet = urlSet.filter((url) => { + return ( + !notFoundRoutes.includes(url) && + !notFoundRoutes.includes(`/${defaultLocale}${url}`) + ) + }) // Create sitemap fields based on transformation const sitemapFields: ISitemapField[] = [] // transform using relative urls From fa37fb96f43a0d1717f04794f76341417bf7e27c Mon Sep 17 00:00:00 2001 From: Sreetam Das Date: Mon, 29 Aug 2022 15:12:55 +0530 Subject: [PATCH 2/2] improvement: update fixture and test for notFoundRoutes on defaultLocale --- packages/next-sitemap/src/__fixtures__/manifest.ts | 7 +++++++ .../__tests__/url-set-builder/create-url-set.test.ts | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/next-sitemap/src/__fixtures__/manifest.ts b/packages/next-sitemap/src/__fixtures__/manifest.ts index ae9888eb..6c5285fd 100644 --- a/packages/next-sitemap/src/__fixtures__/manifest.ts +++ b/packages/next-sitemap/src/__fixtures__/manifest.ts @@ -72,6 +72,7 @@ export const sampleNotFoundRoutesBuildManifest: IBuildManifest = { pages: { '/': [], '/about': [], + '/only-nl': [], '/[dynamic]': [], '/_app': [], '/_error': [], @@ -87,6 +88,10 @@ export const sampleNotFoundRoutesPreRenderManifest: IPreRenderManifest = { '/fr/about': {}, '/nl-NL/about': {}, + '/en-US/only-nl': {}, + '/fr/only-nl': {}, + '/nl-NL/only-nl': {}, + '/en-US/page-0': {}, '/fr/page-0': {}, '/nl-NL/page-0': {}, @@ -98,6 +103,8 @@ export const sampleNotFoundRoutesPreRenderManifest: IPreRenderManifest = { notFoundRoutes: [ '/fr', '/nl-NL/about', + '/en-US/only-nl', + '/fr/only-nl', '/nl-NL/page-0', '/fr/page-1', '/nl-NL/page-1', diff --git a/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts b/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts index 59ceea06..ec517902 100644 --- a/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts +++ b/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts @@ -633,6 +633,15 @@ describe('UrlSetBuilder', () => { alternateRefs: [], trailingSlash: false, }, + // only localized page + { + changefreq: 'daily', + lastmod: expect.any(String), + priority: 0.7, + loc: 'https://example.com/nl-NL/only-nl', + alternateRefs: [], + trailingSlash: false, + }, // page-0 { changefreq: 'daily',