nuxt-site-config 2.0.0-beta.0

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.
@@ -0,0 +1,5 @@
1
+ import { S as SiteConfig } from './type-dfe3e7b7.js';
2
+
3
+ declare function useSiteConfig(overrides?: Partial<SiteConfig>): Partial<SiteConfig>;
4
+
5
+ export { SiteConfig, useSiteConfig };
package/dist/build.mjs ADDED
@@ -0,0 +1,63 @@
1
+ import { tryUseNuxt } from '@nuxt/kit';
2
+ import { withHttp, withHttps } from 'ufo';
3
+ import defu from 'defu';
4
+
5
+ const SITE_CONFIG_ENV = {
6
+ name: process.env.NUXT_PUBLIC_SITE_NAME,
7
+ url: process.env.NUXT_PUBLIC_SITE_URL,
8
+ description: process.env.NUXT_PUBLIC_SITE_DESCRIPTION,
9
+ image: process.env.NUXT_PUBLIC_SITE_IMAGE,
10
+ index: String(process.env.NUXT_PUBLIC_SITE_INDEX) !== "false",
11
+ titleSeparator: process.env.NUXT_PUBLIC_SITE_TITLE_SEPARATOR,
12
+ trailingSlash: String(process.env.NUXT_PUBLIC_SITE_TRAILING_SLASH) !== "false",
13
+ language: process.env.NUXT_PUBLIC_SITE_LANGUAGE
14
+ };
15
+
16
+ const _siteConfigOverrides = {};
17
+ const NITRO_ENV_URL = [
18
+ process.env.NUXT_PUBLIC_VERCEL_URL,
19
+ // vercel
20
+ process.env.NUXT_PUBLIC_URL,
21
+ // netlify
22
+ process.env.NUXT_PUBLIC_CF_PAGES_URL
23
+ // cloudflare pages
24
+ ];
25
+ function overrideSiteConfig(overrides = {}) {
26
+ for (const k of Object.keys(overrides))
27
+ _siteConfigOverrides[k] = overrides[k];
28
+ }
29
+ function createSiteConfig(input) {
30
+ const nitroEnvConfig = {};
31
+ const nitroUrl = NITRO_ENV_URL.find((k) => Boolean(k));
32
+ if (nitroUrl)
33
+ nitroEnvConfig.url = nitroUrl;
34
+ for (const k of Object.keys(SITE_CONFIG_ENV)) {
35
+ if (SITE_CONFIG_ENV[k])
36
+ nitroEnvConfig[k] = SITE_CONFIG_ENV[k];
37
+ }
38
+ const config = defu(_siteConfigOverrides, nitroEnvConfig, input.runtimeConfig || {}, input.contextConfig || {});
39
+ if (typeof config.index !== "undefined")
40
+ config.index = String(config.index) !== "false";
41
+ else
42
+ config.index = process.env.NODE_ENV === "production";
43
+ if (config.url && !config.url.startsWith("http"))
44
+ config.url = config.url.includes("localhost") ? withHttp(config.url) : withHttps(config.url);
45
+ return config;
46
+ }
47
+
48
+ function useSiteConfig(overrides = {}) {
49
+ if (Object.keys(overrides))
50
+ overrideSiteConfig(overrides);
51
+ const runtimeConfig = {};
52
+ const nuxt = tryUseNuxt();
53
+ if (nuxt) {
54
+ for (const k of Object.keys(SITE_CONFIG_ENV)) {
55
+ const env = runtimeConfig[k] = nuxt?.options.runtimeConfig.public.site[k];
56
+ if (env)
57
+ runtimeConfig[k] = env;
58
+ }
59
+ }
60
+ return createSiteConfig({ runtimeConfig });
61
+ }
62
+
63
+ export { useSiteConfig };
@@ -0,0 +1,5 @@
1
+ module.exports = function(...args) {
2
+ return import('./module.mjs').then(m => m.default.call(this, ...args))
3
+ }
4
+ const _meta = module.exports.meta = require('./module.json')
5
+ module.exports.getMeta = () => Promise.resolve(_meta)
@@ -0,0 +1,11 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { S as SiteConfig } from './type-dfe3e7b7.js';
3
+
4
+ interface ModuleOptions extends SiteConfig {
5
+ }
6
+ interface ModulePublicRuntimeConfig {
7
+ site: SiteConfig;
8
+ }
9
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions>;
10
+
11
+ export { ModuleOptions, ModulePublicRuntimeConfig, _default as default };
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "nuxt-site-config",
3
+ "compatibility": {
4
+ "nuxt": "^3.5.0",
5
+ "bridge": false
6
+ },
7
+ "configKey": "site",
8
+ "version": "2.0.0-beta.0"
9
+ }
@@ -0,0 +1,20 @@
1
+ import { defineNuxtModule, createResolver, addImportsDir } from '@nuxt/kit';
2
+ import defu from 'defu';
3
+
4
+ const module = defineNuxtModule({
5
+ meta: {
6
+ name: "nuxt-site-config",
7
+ compatibility: {
8
+ nuxt: "^3.5.0",
9
+ bridge: false
10
+ },
11
+ configKey: "site"
12
+ },
13
+ async setup(config, nuxt) {
14
+ nuxt.options.runtimeConfig.public.site = defu(config, nuxt.options.runtimeConfig.public.site || {});
15
+ const { resolve } = createResolver(import.meta.url);
16
+ addImportsDir(resolve("./runtime/composables"));
17
+ }
18
+ });
19
+
20
+ export { module as default };
@@ -0,0 +1,2 @@
1
+ import type { SiteConfig } from '../type';
2
+ export declare function useSiteConfig(overrides?: Partial<SiteConfig>): Partial<SiteConfig>;
@@ -0,0 +1,28 @@
1
+ import { joinURL } from "ufo";
2
+ import { getRequestURL } from "h3";
3
+ import { SITE_CONFIG_ENV } from "../const";
4
+ import { createSiteConfig, overrideSiteConfig } from "../shared";
5
+ import { useAppConfig, useRequestEvent, useRuntimeConfig } from "#imports";
6
+ function useRequestURL() {
7
+ if (process.server) {
8
+ const { baseURL } = useRuntimeConfig().app;
9
+ const url = getRequestURL(useRequestEvent());
10
+ url.pathname = joinURL(baseURL, url.pathname);
11
+ return url;
12
+ }
13
+ return new URL(window.location.href);
14
+ }
15
+ export function useSiteConfig(overrides = {}) {
16
+ if (Object.keys(overrides))
17
+ overrideSiteConfig(overrides);
18
+ const { baseURL } = useRuntimeConfig().app;
19
+ const contextConfig = {
20
+ url: joinURL(useRequestURL().hostname, baseURL)
21
+ };
22
+ const { public: publicRuntimeConfig } = useRuntimeConfig();
23
+ const appConfig = useAppConfig();
24
+ const runtimeConfig = {};
25
+ for (const k of SITE_CONFIG_ENV)
26
+ runtimeConfig[k] = appConfig.site?.[k] || publicRuntimeConfig.site?.[k];
27
+ return createSiteConfig({ runtimeConfig, contextConfig });
28
+ }
@@ -0,0 +1,12 @@
1
+ interface SiteConfig {
2
+ url: string;
3
+ name: string;
4
+ description: string;
5
+ image: string;
6
+ index: boolean;
7
+ titleSeparator: string;
8
+ trailingSlash: boolean;
9
+ language: string;
10
+ }
11
+
12
+ export { SiteConfig as S };
@@ -0,0 +1,17 @@
1
+
2
+ import { ModuleOptions, ModulePublicRuntimeConfig } from './module'
3
+
4
+ declare module '@nuxt/schema' {
5
+ interface NuxtConfig { ['site']?: Partial<ModuleOptions> }
6
+ interface NuxtOptions { ['site']?: ModuleOptions }
7
+ interface PublicRuntimeConfig extends ModulePublicRuntimeConfig {}
8
+ }
9
+
10
+ declare module 'nuxt/schema' {
11
+ interface NuxtConfig { ['site']?: Partial<ModuleOptions> }
12
+ interface NuxtOptions { ['site']?: ModuleOptions }
13
+ interface PublicRuntimeConfig extends ModulePublicRuntimeConfig {}
14
+ }
15
+
16
+
17
+ export { ModuleOptions, ModulePublicRuntimeConfig, default } from './module'
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "nuxt-site-config",
3
+ "type": "module",
4
+ "version": "2.0.0-beta.0",
5
+ "license": "MIT",
6
+ "funding": "https://github.com/sponsors/harlan-zw",
7
+ "homepage": "https://github.com/harlan-zw/nuxt-seo-kit#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/harlan-zw/nuxt-seo-kit.git",
11
+ "directory": "site-config"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/harlan-zw/nuxt-seo-kit/issues"
15
+ },
16
+ "sideEffects": false,
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/module.d.ts",
20
+ "import": "./dist/module.mjs"
21
+ },
22
+ "./build": {
23
+ "types": "./dist/build.d.ts",
24
+ "import": "./dist/build.mjs"
25
+ }
26
+ },
27
+ "main": "dist/module.mjs",
28
+ "module": "dist/module.mjs",
29
+ "types": "dist/module.d.ts",
30
+ "files": [
31
+ "dist",
32
+ "*.d.ts"
33
+ ],
34
+ "dependencies": {
35
+ "@nuxt/kit": "^3.5.1",
36
+ "@nuxt/module-builder": "^0.3.1",
37
+ "defu": "^6.1.2",
38
+ "ufo": "^1.1.2"
39
+ },
40
+ "scripts": {
41
+ "build": "nuxt-module-build",
42
+ "stub": "unbuild --stub"
43
+ }
44
+ }