// Clears the SEO layer's caches after every successful site cache purge, // whichever layer's copy of POST /api/__site__/cache/purge answered it. // // vue-journal-layer, vue-menu-layer and vue-faq-layer ship their own copy of // the shared purge route until they extend this layer, and Nitro keeps one // handler per route and method, so in an app that extends several of them // this layer's route (which clears the caches itself) may not be the one // that runs. The journal's deprecated POST /api/__journal__/cache/purge // purges the route cache too, so it clears them as well. Clearing twice is // harmless. import { clearSeoCaches } from '../lib/resolve.ts' const PURGE_PATHS = new Set(['/api/__site__/cache/purge', '/api/__journal__/cache/purge']) export default defineNitroPlugin((nitroApp) => { nitroApp.hooks.hook('afterResponse', (event) => { if (event.method !== 'POST') return if (!PURGE_PATHS.has((event.path.split('?')[0] ?? '').replace(/\/+$/, ''))) return if (event.node.res.statusCode === 200) clearSeoCaches() }) })