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 +1 -1
- package/dist/module.mjs +3 -2
- package/dist/runtime/composables/useSiteConfig.d.ts +2 -3
- package/dist/runtime/composables/useSiteConfig.mjs +2 -4
- package/dist/runtime/nitro/composables/useSiteConfig.d.ts +2 -1
- package/dist/runtime/nitro/composables/useSiteConfig.mjs +5 -2
- package/dist/runtime/nitro/plugins/injectState.d.ts +3 -0
- package/dist/runtime/nitro/plugins/injectState.mjs +20 -0
- package/dist/runtime/plugins/0.siteConfig.mjs +16 -11
- package/package.json +4 -4
package/dist/module.json
CHANGED
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.
|
|
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
|
-
|
|
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
|
-
|
|
6
|
+
const options = defu(_options, useRuntimeConfig()["nuxt-site-config"], { debug: false });
|
|
7
|
+
return e.context.siteConfig.get(options);
|
|
5
8
|
}
|
|
@@ -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 {
|
|
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
|
|
9
|
+
let stack;
|
|
10
|
+
const state = useState("site-config");
|
|
9
11
|
if (process.server) {
|
|
10
|
-
|
|
12
|
+
stack = useRequestEvent().context.siteConfig;
|
|
11
13
|
nuxtApp.hooks.hook("app:rendered", () => {
|
|
12
|
-
|
|
14
|
+
state.value = useRequestEvent().context.siteConfig.get();
|
|
13
15
|
});
|
|
14
16
|
}
|
|
15
|
-
if (!
|
|
16
|
-
|
|
17
|
+
if (!stack) {
|
|
18
|
+
stack = createSiteConfigStack({
|
|
17
19
|
debug: config.debug
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
if (process.client) {
|
|
21
|
-
|
|
23
|
+
stack.push({
|
|
22
24
|
_context: "window",
|
|
23
25
|
url: window.location.origin
|
|
24
26
|
});
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
27
|
-
|
|
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:
|
|
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.
|
|
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.
|
|
34
|
-
"site-config-stack": "1.5.
|
|
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",
|