UNPKG

nuxt-site-config

Version:

Shared site configuration for Nuxt 3 modules.

32 lines (31 loc) 986 B
import { defineNuxtPlugin, useRequestEvent, useRuntimeConfig, useState } from "nuxt/app"; import { createSiteConfigStack } from "site-config-stack"; export default defineNuxtPlugin({ name: "nuxt-site-config:init", enforce: "pre", async setup(nuxtApp) { const stack = import.meta.server ? useRequestEvent()?.context?.siteConfig : createSiteConfigStack(); const state = useState("site-config"); if (import.meta.server) { nuxtApp.hooks.hook("app:rendered", () => { state.value = stack?.get({ debug: useRuntimeConfig()["nuxt-site-config"].debug, resolveRefs: true }); }); } if (import.meta.client) { const store = state.value || window.__NUXT_SITE_CONFIG__ || {}; for (const k in store) { if (k[0] !== "_") { stack.push({ [k]: store[k], _priority: store._priority?.[k] || -1 }); } } } return { provide: { nuxtSiteConfig: stack } }; } });