Skip to content

Commit

Permalink
fix: expose event on all nitro hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
harlan-zw committed Feb 18, 2025
1 parent cf5e582 commit 30b4686
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 8 deletions.
6 changes: 3 additions & 3 deletions src/runtime/server/routes/sitemap_index.xml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { joinURL } from 'ufo'
import { useNitroApp } from 'nitropack/runtime'
import { useSitemapRuntimeConfig } from '../utils'
import { buildSitemapIndex, urlsToIndexXml } from '../sitemap/builder/sitemap-index'
import type { SitemapOutputHookCtx } from '../../types'
import type { SitemapIndexRenderCtx, SitemapOutputHookCtx } from '../../types'
import { useNitroUrlResolvers } from '../sitemap/nitro'

export default defineEventHandler(async (e) => {
Expand All @@ -23,11 +23,11 @@ export default defineEventHandler(async (e) => {
)
}

const indexResolvedCtx = { sitemaps }
const indexResolvedCtx: SitemapIndexRenderCtx = { sitemaps, event: e }
await nitro.hooks.callHook('sitemap:index-resolved', indexResolvedCtx)

const output = urlsToIndexXml(indexResolvedCtx.sitemaps, resolvers, runtimeConfig)
const ctx: SitemapOutputHookCtx = { sitemap: output, sitemapName: 'sitemap' }
const ctx: SitemapOutputHookCtx = { sitemap: output, sitemapName: 'sitemap', event: e }
await nitro.hooks.callHook('sitemap:output', ctx)

setHeader(e, 'Content-Type', 'text/xml; charset=UTF-8')
Expand Down
1 change: 1 addition & 0 deletions src/runtime/server/sitemap/builder/sitemap-index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export async function buildSitemapIndex(resolvers: NitroUrlResolvers, runtimeCon
const resolvedCtx: SitemapInputCtx = {
urls: sources.flatMap(s => s.urls),
sitemapName: sitemap.sitemapName,
event: resolvers.event,
}
await nitro?.hooks.callHook('sitemap:input', resolvedCtx)
const normalisedUrls = resolveSitemapEntries(sitemap, resolvedCtx.urls, { autoI18n, isI18nMapped }, resolvers)
Expand Down
1 change: 1 addition & 0 deletions src/runtime/server/sitemap/builder/sitemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ export async function buildSitemapUrls(sitemap: SitemapDefinition, resolvers: Ni
const resolvedCtx: SitemapInputCtx = {
urls: sources.flatMap(s => s.urls),
sitemapName: sitemap.sitemapName,
event: resolvers.event,
}
await nitro?.hooks.callHook('sitemap:input', resolvedCtx)
const enhancedUrls = resolveSitemapEntries(sitemap, resolvedCtx.urls, { autoI18n, isI18nMapped }, resolvers)
Expand Down
3 changes: 2 additions & 1 deletion src/runtime/server/sitemap/nitro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export async function createSitemap(event: H3Event, definition: SitemapDefinitio
const resolvedCtx: SitemapRenderCtx = {
urls: sitemapUrls,
sitemapName: sitemapName,
event,
}
await nitro.hooks.callHook('sitemap:resolved', resolvedCtx)
// we need to normalize any new urls otherwise they won't appear in the final sitemap
Expand All @@ -105,7 +106,7 @@ export async function createSitemap(event: H3Event, definition: SitemapDefinitio
const urls = maybeSort(mergeOnKey(normalizedPreDedupe, '_key').map(e => normaliseEntry(e, definition.defaults, resolvers)))
const sitemap = urlsToXml(urls, resolvers, runtimeConfig)

const ctx = { sitemap, sitemapName }
const ctx = { sitemap, sitemapName, event }
await nitro.hooks.callHook('sitemap:output', ctx)
// need to clone the config object to make it writable
setHeader(event, 'Content-Type', 'text/xml; charset=UTF-8')
Expand Down
12 changes: 8 additions & 4 deletions src/runtime/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,21 +303,25 @@ export interface SitemapDefinition {
_route?: string
}

export interface SitemapIndexRenderCtx {
interface NitroBaseHook {
event: H3Event
}

export interface SitemapIndexRenderCtx extends NitroBaseHook {
sitemaps: SitemapIndexEntry[]
}

export interface SitemapRenderCtx {
export interface SitemapRenderCtx extends NitroBaseHook {
sitemapName: string
urls: ResolvedSitemapUrl[]
}

export interface SitemapInputCtx {
export interface SitemapInputCtx extends NitroBaseHook {
sitemapName: string
urls: SitemapUrlInput[]
}

export interface SitemapOutputHookCtx {
export interface SitemapOutputHookCtx extends NitroBaseHook {
sitemapName: string
sitemap: string
}
Expand Down

0 comments on commit 30b4686

Please sign in to comment.