diff --git a/src/runtime/server/sitemap/builder/sitemap.ts b/src/runtime/server/sitemap/builder/sitemap.ts index 009ccba..3b7e555 100644 --- a/src/runtime/server/sitemap/builder/sitemap.ts +++ b/src/runtime/server/sitemap/builder/sitemap.ts @@ -224,7 +224,7 @@ export async function buildSitemapUrls(sitemap: SitemapDefinition, resolvers: Ni // always fetch all sitemap data for the primary sitemap const sourcesInput = sitemap.includeAppSources ? await globalSitemapSources() : [] sourcesInput.push(...await childSitemapSources(sitemap)) - const sources = await resolveSitemapSources(sourcesInput, resolvers.event) + const sources = await resolveSitemapSources(sourcesInput) const resolvedCtx: SitemapInputCtx = { urls: sources.flatMap(s => s.urls), sitemapName: sitemap.sitemapName, diff --git a/src/runtime/server/sitemap/urlset/sources.ts b/src/runtime/server/sitemap/urlset/sources.ts index c206795..feda030 100644 --- a/src/runtime/server/sitemap/urlset/sources.ts +++ b/src/runtime/server/sitemap/urlset/sources.ts @@ -1,7 +1,4 @@ -import { getRequestHost } from 'h3' -import type { H3Event } from 'h3' import type { FetchError } from 'ofetch' -import { defu } from 'defu' import type { ModuleRuntimeConfig, SitemapSourceBase, @@ -9,7 +6,7 @@ import type { SitemapUrlInput, } from '../../../types' -export async function fetchDataSource(input: SitemapSourceBase | SitemapSourceResolved, event?: H3Event): Promise { +export async function fetchDataSource(input: SitemapSourceBase | SitemapSourceResolved): Promise { const context = typeof input.context === 'string' ? { name: input.context } : input.context || { name: 'fetch' } context.tips = context.tips || [] const url = typeof input.fetch === 'string' ? input.fetch : input.fetch![0] @@ -23,14 +20,16 @@ export async function fetchDataSource(input: SitemapSourceBase | SitemapSourceRe let isHtmlResponse = false try { - const fetchContainer = (url.startsWith('/') && event) ? event : globalThis - const urls = await fetchContainer.$fetch(url, { + const urls = await globalThis.$fetch(url, { ...options, responseType: 'json', signal: timeoutController.signal, - headers: defu(options?.headers, { - Accept: 'application/json', - }, event ? { Host: getRequestHost(event, { xForwardedHost: true }) } : {}), + headers: { + ...(options?.headers || {}), + ...{ + Accept: 'application/json', + }, + }, // @ts-expect-error untyped onResponse({ response }) { if (typeof response._data === 'string' && response._data.startsWith('')) @@ -86,12 +85,12 @@ export function childSitemapSources(definition: ModuleRuntimeConfig['sitemaps'][ return ( definition?._hasSourceChunk ? import(`#sitemap-virtual/child-sources.mjs`) - .then(m => m.sources[definition.sitemapName] || []) + .then(m => m.sources[definition.sitemapName] || []) : Promise.resolve([]) ) } -export async function resolveSitemapSources(sources: (SitemapSourceBase | SitemapSourceResolved)[], event?: H3Event) { +export async function resolveSitemapSources(sources: (SitemapSourceBase | SitemapSourceResolved)[]) { return (await Promise.all( sources.map((source) => { if (typeof source === 'object' && 'urls' in source) { @@ -102,7 +101,7 @@ export async function resolveSitemapSources(sources: (SitemapSourceBase | Sitema } } if (source.fetch) - return fetchDataSource(source, event) + return fetchDataSource(source) return { ...source,