1
1
import { resolveSitePath } from 'nuxt-site-config/urls'
2
2
import { joinURL , withHttps } from 'ufo'
3
+ import type { NitroApp } from 'nitropack/types'
3
4
import type {
4
5
AlternativeEntry , AutoI18nConfig ,
5
6
ModuleRuntimeConfig ,
6
7
NitroUrlResolvers ,
7
8
ResolvedSitemapUrl ,
8
- SitemapDefinition ,
9
- SitemapSourceResolved ,
9
+ SitemapDefinition , SitemapInputCtx ,
10
10
SitemapUrlInput ,
11
11
} from '../../../types'
12
12
import { preNormalizeEntry } from '../urlset/normalise'
@@ -21,7 +21,7 @@ export interface NormalizedI18n extends ResolvedSitemapUrl {
21
21
_index ?: number
22
22
}
23
23
24
- export function resolveSitemapEntries ( sitemap : SitemapDefinition , sources : SitemapSourceResolved [ ] , runtimeConfig : Pick < ModuleRuntimeConfig , 'autoI18n' | 'isI18nMapped' > , resolvers ?: NitroUrlResolvers ) : ResolvedSitemapUrl [ ] {
24
+ export function resolveSitemapEntries ( sitemap : SitemapDefinition , urls : SitemapUrlInput [ ] , runtimeConfig : Pick < ModuleRuntimeConfig , 'autoI18n' | 'isI18nMapped' > , resolvers ?: NitroUrlResolvers ) : ResolvedSitemapUrl [ ] {
25
25
const {
26
26
autoI18n,
27
27
isI18nMapped,
@@ -31,7 +31,7 @@ export function resolveSitemapEntries(sitemap: SitemapDefinition, sources: Sitem
31
31
exclude : sitemap . exclude ,
32
32
} )
33
33
// 1. normalise
34
- const _urls = sources . flatMap ( e => e . urls ) . map ( ( _e ) => {
34
+ const _urls = urls . map ( ( _e ) => {
35
35
const e = preNormalizeEntry ( _e , resolvers )
36
36
if ( ! e . loc || ! filterPath ( e . loc ) )
37
37
return false
@@ -176,7 +176,7 @@ export function resolveSitemapEntries(sitemap: SitemapDefinition, sources: Sitem
176
176
return _urls
177
177
}
178
178
179
- export async function buildSitemapUrls ( sitemap : SitemapDefinition , resolvers : NitroUrlResolvers , runtimeConfig : ModuleRuntimeConfig ) {
179
+ export async function buildSitemapUrls ( sitemap : SitemapDefinition , resolvers : NitroUrlResolvers , runtimeConfig : ModuleRuntimeConfig , nitro ?: NitroApp ) {
180
180
// 0. resolve sources
181
181
// 1. normalise
182
182
// 2. filter
@@ -222,11 +222,15 @@ export async function buildSitemapUrls(sitemap: SitemapDefinition, resolvers: Ni
222
222
}
223
223
// 0. resolve sources
224
224
// always fetch all sitemap data for the primary sitemap
225
- const sources = sitemap . includeAppSources ? await globalSitemapSources ( ) : [ ]
226
- sources . push ( ...await childSitemapSources ( sitemap ) )
227
- const resolvedSources = await resolveSitemapSources ( sources , resolvers . event )
228
-
229
- const enhancedUrls = resolveSitemapEntries ( sitemap , resolvedSources , { autoI18n, isI18nMapped } , resolvers )
225
+ const sourcesInput = sitemap . includeAppSources ? await globalSitemapSources ( ) : [ ]
226
+ sourcesInput . push ( ...await childSitemapSources ( sitemap ) )
227
+ const sources = await resolveSitemapSources ( sourcesInput , resolvers . event )
228
+ const resolvedCtx : SitemapInputCtx = {
229
+ urls : sources . flatMap ( s => s . urls ) ,
230
+ sitemapName : sitemap . sitemapName ,
231
+ }
232
+ await nitro ?. hooks . callHook ( 'sitemap:input' , resolvedCtx )
233
+ const enhancedUrls = resolveSitemapEntries ( sitemap , resolvedCtx . urls , { autoI18n, isI18nMapped } , resolvers )
230
234
// 3. filtered urls
231
235
// TODO make sure include and exclude start with baseURL?
232
236
const filteredUrls = enhancedUrls . filter ( ( e ) => {
0 commit comments