// vue-faq-layer: renders a FAQ of the SummerCMS FAQ plugin // (GET /_faq/api/v1/faqs/{slug}) as native
items. An app consumes // it with `extends: ['vue-faq-layer']` and renders . // // Every path below is absolute and built from this file's directory: a // relative or ~ path in a layer config resolves against the consuming // project, not the layer. The layer declares no Nuxt modules. import { fileURLToPath } from 'node:url' const currentDir = fileURLToPath(new URL('.', import.meta.url)) export default defineNuxtConfig({ compatibilityDate: '2025-07-15', devtools: { enabled: false }, // Tokens first, then the neutral styles that use them. The app's own css // array loads after these, so its token overrides win. css: [`${currentDir}app/assets/css/faq-tokens.css`, `${currentDir}app/assets/css/faq-base.css`], runtimeConfig: { faq: { // Server-only base for SSR fetches (NUXT_FAQ_API_BASE). It never comes // from request input. apiBase: 'http://127.0.0.1:8096/_faq/api/v1', }, cachePurge: { // Server-only bearer token of the shared site cache purge route // POST /api/__site__/cache/purge (NUXT_CACHE_PURGE_TOKEN), the // backend's site_cache.purge_token. Shorter than 32 characters, the // route answers 404. Not under NUXT_SITE_: nuxt-site-config copies // every NUXT_SITE_* variable into the site config, which is published // in every page's payload. token: '', // NUXT_CACHE_PURGE_ALLOW_PROXIED: set it to true when the backend // reaches the site through a TLS-terminating proxy (an https // site_cache.purge_url on another host), which adds X-Forwarded-For, // X-Real-IP or Forwarded. The route then accepts proxied requests and // the bearer token is the only gate; unset, it answers 404 to any // proxied request. allowProxied: false, }, // Deprecated (one release): the earlier names of cachePurge.token // (NUXT_SITE_CACHE_PURGE_TOKEN) and cachePurge.allowProxied // (NUXT_SITE_CACHE_ALLOW_PROXIED), read when the new ones are unset. The // layer's server/plugins/site-cache-purge.ts strips them from the site // config and logs a deprecation warning. siteCache: { purgeToken: '', allowProxied: false, }, public: { faq: { // Same-origin base for browser fetches (NUXT_PUBLIC_FAQ_API_BASE). apiBase: '/_faq/api/v1', }, }, }, // The shared site routes are never route-cached. Nitro wraps every // handler matching an app rule such as '/**': { swr } in its cached // handler, which keys by path, does not skip POST and hides request // headers, so the purge route would answer from the cache without running. routeRules: { '/api/__site__/**': { cache: false }, }, })