// https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ modules: [ "@nuxtjs/seo", "@nuxtjs/tailwindcss", "@vueuse/nuxt", "nuxt-headlessui", "@nuxt/fonts", "nuxt-icon", //"nuxt-shiki", "@vee-validate/nuxt", "nuxt-security", ], security: { headers: { // Nuxt DevTools crossOriginEmbedderPolicy: process.env.NODE_ENV === "development" ? "unsafe-none" : "require-corp", contentSecurityPolicy: { "img-src": ["'self'", "data:", "https:"], "script-src": ["'nonce-{{nonce}}'", "'strict-dynamic'"], }, crossOriginResourcePolicy: "cross-origin", xFrameOptions: "DENY", }, rateLimiter: { headers: true, tokensPerInterval: 300, interval: 300000, }, }, app: { head: { link: [ { rel: "icon", href: "/favicon.png", type: "image/png", }, ], htmlAttrs: { lang: "en-us" }, }, keepalive: true, }, /* shiki: { defaultTheme: "rose-pine", bundledLangs: [ "javascript", "typescript", "html", "css", "json", "python", "toml", "rust", "sql", "scss", "bash", "shell", "yaml", ], }, */ nitro: { preset: "bun", minify: true, prerender: { failOnError: true, }, compressPublicAssets: { brotli: false, gzip: false, }, }, schemaOrg: { enabled: false, }, ogImage: { enabled: false, }, veeValidate: { autoImports: true, componentNames: { Form: "VeeForm", Field: "VeeField", FieldArray: "VeeFieldArray", ErrorMessage: "VeeErrorMessage", }, }, runtimeConfig: { public: { language: "en-US", titleSeparator: "ยท", siteName: "Lysand", trailingSlash: true, apiHost: "https://social.lysand.org", }, }, site: { url: "https://social.lysand.org", }, devtools: { enabled: true, }, });