51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
|
|
import { useAppConfig, useNitroApp, useNitroOrigin, useRuntimeConfig } from "#imports";
|
||
|
|
import { defineEventHandler } from "h3";
|
||
|
|
import { createSiteConfigStack, envSiteConfig } from "site-config-stack";
|
||
|
|
export default defineEventHandler(async (e) => {
|
||
|
|
if (e.context.siteConfig)
|
||
|
|
return;
|
||
|
|
const runtimeConfig = useRuntimeConfig(e);
|
||
|
|
const config = runtimeConfig["nuxt-site-config"];
|
||
|
|
const nitroApp = useNitroApp();
|
||
|
|
const siteConfig = createSiteConfigStack({
|
||
|
|
debug: config.debug
|
||
|
|
});
|
||
|
|
const appConfig = useAppConfig(e);
|
||
|
|
const nitroOrigin = useNitroOrigin(e);
|
||
|
|
e.context.siteConfigNitroOrigin = nitroOrigin;
|
||
|
|
if (!import.meta.prerender) {
|
||
|
|
siteConfig.push({
|
||
|
|
_context: "nitro:init",
|
||
|
|
_priority: -4,
|
||
|
|
url: nitroOrigin
|
||
|
|
});
|
||
|
|
}
|
||
|
|
siteConfig.push({
|
||
|
|
_context: "runtimeEnv",
|
||
|
|
_priority: 0,
|
||
|
|
...runtimeConfig.site || {},
|
||
|
|
...runtimeConfig.public.site || {},
|
||
|
|
// @ts-expect-error untyped
|
||
|
|
...envSiteConfig(import.meta.env)
|
||
|
|
// just in-case, shouldn't be needed
|
||
|
|
});
|
||
|
|
const buildStack = config.stack || [];
|
||
|
|
buildStack.forEach((c) => siteConfig.push(c));
|
||
|
|
if (appConfig.site) {
|
||
|
|
siteConfig.push({
|
||
|
|
_priority: -2,
|
||
|
|
_context: "app:config",
|
||
|
|
...appConfig.site
|
||
|
|
});
|
||
|
|
}
|
||
|
|
if (e.context._nitro.routeRules.site) {
|
||
|
|
siteConfig.push({
|
||
|
|
_context: "route-rules",
|
||
|
|
...e.context._nitro.routeRules.site
|
||
|
|
});
|
||
|
|
}
|
||
|
|
const ctx = { siteConfig, event: e };
|
||
|
|
await nitroApp.hooks.callHook("site-config:init", ctx);
|
||
|
|
e.context.siteConfig = ctx.siteConfig;
|
||
|
|
});
|