nuxt-site-config 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "bridge": false
6
6
  },
7
7
  "configKey": "site",
8
- "version": "1.5.0"
8
+ "version": "1.5.2"
9
9
  }
package/dist/module.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { useNuxt, createResolver, addTemplate, defineNuxtModule, useLogger, addImports, addComponent, addPlugin, hasNuxtModule, addServerHandler, addPrerenderRoutes } from '@nuxt/kit';
1
+ import { useNuxt, createResolver, addTemplate, defineNuxtModule, useLogger, addImports, addComponent, addPlugin, hasNuxtModule, addServerHandler, addPrerenderRoutes, addServerPlugin } from '@nuxt/kit';
2
2
  import { initSiteConfig, updateSiteConfig, getSiteConfigStack } from 'nuxt-site-config-kit';
3
3
  import { relative } from 'pathe';
4
4
 
5
- const version = "1.5.0";
5
+ const version = "1.5.2";
6
6
 
7
7
  function extendTypes(module, template) {
8
8
  const nuxt = useNuxt();
@@ -180,6 +180,7 @@ declare module '@nuxt/schema' {
180
180
  });
181
181
  addPrerenderRoutes("/api/__site-config__/debug");
182
182
  }
183
+ addServerPlugin(resolve("./runtime/nitro/plugins/injectState"));
183
184
  }
184
185
  });
185
186
 
@@ -1,4 +1,3 @@
1
+ import type { GetSiteConfigOptions } from 'site-config-stack';
1
2
  import type { NuxtSiteConfig } from '../types';
2
- export declare function useSiteConfig(options?: {
3
- debug?: boolean;
4
- }): NuxtSiteConfig;
3
+ export declare function useSiteConfig(options?: GetSiteConfigOptions): NuxtSiteConfig;
@@ -6,11 +6,9 @@ import {
6
6
  export function useSiteConfig(options) {
7
7
  let stack;
8
8
  if (process.server)
9
- stack = useRequestEvent().context.siteConfig.get();
9
+ stack = useRequestEvent().context.siteConfig.get(options);
10
10
  else
11
- stack = useNuxtApp().$nuxtSiteConfig.get();
12
- if (!options?.debug)
13
- delete stack._context;
11
+ stack = useNuxtApp().$nuxtSiteConfig.get(options);
14
12
  Object.entries(stack).forEach(([k, v]) => {
15
13
  stack[k] = toValue(v);
16
14
  });
@@ -1,3 +1,4 @@
1
1
  import type { H3Event } from 'h3';
2
+ import type { GetSiteConfigOptions } from 'site-config-stack';
2
3
  import type { NuxtSiteConfig } from '../../types';
3
- export declare function useSiteConfig(e: H3Event): NuxtSiteConfig;
4
+ export declare function useSiteConfig(e: H3Event, _options?: GetSiteConfigOptions): NuxtSiteConfig;
@@ -1,5 +1,8 @@
1
1
  import { createSiteConfigStack } from "site-config-stack";
2
- export function useSiteConfig(e) {
2
+ import defu from "defu";
3
+ import { useRuntimeConfig } from "#imports";
4
+ export function useSiteConfig(e, _options) {
3
5
  e.context.siteConfig = e.context.siteConfig || createSiteConfigStack();
4
- return e.context.siteConfig.get();
6
+ const options = defu(_options, useRuntimeConfig()["nuxt-site-config"], { debug: false });
7
+ return e.context.siteConfig.get(options);
5
8
  }
@@ -0,0 +1,3 @@
1
+ import type { NitroAppPlugin } from 'nitropack';
2
+ declare const InjectStatePlugin: NitroAppPlugin;
3
+ export default InjectStatePlugin;
@@ -0,0 +1,20 @@
1
+ import devalue from "@nuxt/devalue";
2
+ import { toValue } from "vue";
3
+ import { getRouteRules } from "#internal/nitro";
4
+ import { useSiteConfig } from "#imports";
5
+ const PRERENDER_NO_SSR_ROUTES = /* @__PURE__ */ new Set(["/index.html", "/200.html", "/404.html"]);
6
+ const InjectStatePlugin = async (nitroApp) => {
7
+ nitroApp.hooks.hook("render:html", async (ctx, { event }) => {
8
+ const routeOptions = getRouteRules(event);
9
+ const isIsland = process.env.NUXT_COMPONENT_ISLANDS && event.path.startsWith("/__nuxt_island");
10
+ const url = event.path;
11
+ const noSSR = !!process.env.NUXT_NO_SSR || event.context.nuxt?.noSSR || routeOptions.ssr === false && !isIsland || (import.meta.prerender ? PRERENDER_NO_SSR_ROUTES.has(url) : false);
12
+ if (noSSR) {
13
+ const siteConfig = Object.fromEntries(
14
+ Object.entries(useSiteConfig(event)).map(([k, v]) => [k, toValue(v)])
15
+ );
16
+ ctx.body.push(`<script>window.__NUXT_SITE_CONFIG__=${devalue(siteConfig)}<\/script>`);
17
+ }
18
+ });
19
+ };
20
+ export default InjectStatePlugin;
@@ -1,34 +1,39 @@
1
1
  import { createSiteConfigStack } from "site-config-stack";
2
- import { defineNuxtPlugin, useRequestEvent, useRuntimeConfig, useState } from "#imports";
2
+ import { parse } from "devalue";
3
+ import { defineNuxtPlugin, useNuxtApp, useRequestEvent, useRuntimeConfig, useState } from "#imports";
3
4
  export default defineNuxtPlugin({
4
5
  name: "nuxt-site-config",
5
6
  enforce: "pre",
6
7
  async setup(nuxtApp) {
7
8
  const config = useRuntimeConfig()["nuxt-site-config"] || { debug: false };
8
- let siteConfigStack;
9
+ let stack;
10
+ const state = useState("site-config");
9
11
  if (process.server) {
10
- siteConfigStack = useRequestEvent().context.siteConfig;
12
+ stack = useRequestEvent().context.siteConfig;
11
13
  nuxtApp.hooks.hook("app:rendered", () => {
12
- useState("site-config", () => useRequestEvent().context.siteConfig.get());
14
+ state.value = useRequestEvent().context.siteConfig.get();
13
15
  });
14
16
  }
15
- if (!siteConfigStack) {
16
- siteConfigStack = createSiteConfigStack({
17
+ if (!stack) {
18
+ stack = createSiteConfigStack({
17
19
  debug: config.debug
18
20
  });
19
21
  }
20
22
  if (process.client) {
21
- siteConfigStack.push({
23
+ stack.push({
22
24
  _context: "window",
23
25
  url: window.location.origin
24
26
  });
25
- const state = useState("site-config");
26
- if (state.value)
27
- siteConfigStack.push(state.value);
27
+ const nuxt = useNuxtApp();
28
+ if (nuxt.payload.serverRendered) {
29
+ stack.push(state.value);
30
+ } else {
31
+ stack.push(parse(window.__NUXT_SITE_CONFIG__));
32
+ }
28
33
  }
29
34
  return {
30
35
  provide: {
31
- nuxtSiteConfig: siteConfigStack
36
+ nuxtSiteConfig: stack
32
37
  }
33
38
  };
34
39
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-site-config",
3
3
  "type": "module",
4
- "version": "1.5.0",
4
+ "version": "1.5.2",
5
5
  "description": "Shared site configuration for Nuxt 3 modules.",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/harlan-zw",
@@ -30,8 +30,8 @@
30
30
  "@nuxt/schema": "^3.7.4",
31
31
  "pathe": "^1.1.1",
32
32
  "ufo": "^1.3.1",
33
- "nuxt-site-config-kit": "1.5.0",
34
- "site-config-stack": "1.5.0"
33
+ "nuxt-site-config-kit": "1.5.2",
34
+ "site-config-stack": "1.5.2"
35
35
  },
36
36
  "build": {
37
37
  "externals": [
@@ -39,7 +39,7 @@
39
39
  ]
40
40
  },
41
41
  "scripts": {
42
- "build": "nuxt-module-build --stub && nuxt-module-build prepare && nuxt-module-build",
42
+ "build": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt-module-build build",
43
43
  "dev:build": "nuxi build playground",
44
44
  "dev:prepare": "nuxt-module-build --stub && nuxi prepare playground",
45
45
  "release": "bumpp package.json --commit --push --tag",