nuxt-site-config-kit 3.1.6 → 3.1.8
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/index.cjs +16 -147
- package/dist/index.mjs +7 -142
- package/dist/shared/nuxt-site-config-kit.B3BiEa0J.cjs +152 -0
- package/dist/shared/nuxt-site-config-kit.B91Njd6f.mjs +142 -0
- package/dist/urls.cjs +1 -1
- package/dist/urls.mjs +1 -1
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1,152 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
const urls = require('./shared/nuxt-site-config-kit.B3BiEa0J.cjs');
|
|
4
|
+
require('@nuxt/kit');
|
|
5
|
+
require('site-config-stack/urls');
|
|
6
|
+
require('std-env');
|
|
7
|
+
require('pkg-types');
|
|
8
|
+
require('site-config-stack');
|
|
9
|
+
require('ufo');
|
|
9
10
|
|
|
10
|
-
async function initSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
11
|
-
if (!nuxt)
|
|
12
|
-
return;
|
|
13
|
-
let siteConfig = nuxt._siteConfig;
|
|
14
|
-
if (siteConfig)
|
|
15
|
-
return siteConfig;
|
|
16
|
-
siteConfig = siteConfigStack.createSiteConfigStack();
|
|
17
|
-
const rootDir = nuxt?.options.rootDir || process.cwd?.() || false;
|
|
18
|
-
siteConfig.push({
|
|
19
|
-
_context: "system",
|
|
20
|
-
_priority: -15,
|
|
21
|
-
name: rootDir ? rootDir.split("/").pop() : void 0,
|
|
22
|
-
env: process.env.NODE_ENV
|
|
23
|
-
});
|
|
24
|
-
if (rootDir) {
|
|
25
|
-
const pkgJson = await pkgTypes.readPackageJSON(rootDir);
|
|
26
|
-
if (pkgJson) {
|
|
27
|
-
siteConfig.push({
|
|
28
|
-
_context: "package.json",
|
|
29
|
-
_priority: -10,
|
|
30
|
-
name: pkgJson.name,
|
|
31
|
-
description: pkgJson.description
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
siteConfig.push({
|
|
36
|
-
_context: "vendorEnv",
|
|
37
|
-
_priority: -5,
|
|
38
|
-
url: [
|
|
39
|
-
// vercel
|
|
40
|
-
process.env.VERCEL_URL,
|
|
41
|
-
process.env.NUXT_ENV_VERCEL_URL,
|
|
42
|
-
// netlify
|
|
43
|
-
process.env.URL,
|
|
44
|
-
// cloudflare pages
|
|
45
|
-
process.env.CF_PAGES_URL
|
|
46
|
-
].find((k) => Boolean(k)),
|
|
47
|
-
name: [
|
|
48
|
-
// vercel
|
|
49
|
-
process.env.NUXT_ENV_VERCEL_GIT_REPO_SLUG,
|
|
50
|
-
// netlify
|
|
51
|
-
process.env.SITE_NAME
|
|
52
|
-
].find((k) => Boolean(k))
|
|
53
|
-
});
|
|
54
|
-
const runtimeConfig = nuxt.options.runtimeConfig;
|
|
55
|
-
const runtimeConfigEnvKeys = [
|
|
56
|
-
...Object.entries(runtimeConfig.site || {}).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v]),
|
|
57
|
-
...Object.entries([...Object.entries(runtimeConfig), ...Object.entries(runtimeConfig.public)]).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v])
|
|
58
|
-
];
|
|
59
|
-
siteConfig.push({
|
|
60
|
-
_priority: -2,
|
|
61
|
-
_context: "legacyRuntimeConfig",
|
|
62
|
-
...Object.fromEntries(runtimeConfigEnvKeys)
|
|
63
|
-
});
|
|
64
|
-
siteConfig.push({
|
|
65
|
-
_context: "buildEnv",
|
|
66
|
-
_priority: -1,
|
|
67
|
-
...siteConfigStack.envSiteConfig(process.env)
|
|
68
|
-
});
|
|
69
|
-
nuxt._siteConfig = siteConfig;
|
|
70
|
-
return siteConfig;
|
|
71
|
-
}
|
|
72
|
-
async function installNuxtSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
73
|
-
await kit.installModule(await kit.resolvePath("nuxt-site-config"));
|
|
74
|
-
await initSiteConfig(nuxt);
|
|
75
|
-
}
|
|
76
|
-
function getSiteConfigStack(nuxt = kit.tryUseNuxt()) {
|
|
77
|
-
if (!nuxt)
|
|
78
|
-
throw new Error("Nuxt context is missing.");
|
|
79
|
-
if (!nuxt._siteConfig)
|
|
80
|
-
throw new Error("Site config is not initialized. Make sure you are running your module after nuxt-site-config.");
|
|
81
|
-
return nuxt._siteConfig;
|
|
82
|
-
}
|
|
83
|
-
function updateSiteConfig(input, nuxt = kit.tryUseNuxt()) {
|
|
84
|
-
const container = getSiteConfigStack(nuxt);
|
|
85
|
-
return container.push(input);
|
|
86
|
-
}
|
|
87
|
-
function useSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
88
|
-
const container = getSiteConfigStack(nuxt);
|
|
89
|
-
return container.get();
|
|
90
|
-
}
|
|
91
11
|
|
|
92
|
-
function useNitroOrigin() {
|
|
93
|
-
const cert = stdEnv.env.NITRO_SSL_CERT;
|
|
94
|
-
const key = stdEnv.env.NITRO_SSL_KEY;
|
|
95
|
-
let host = stdEnv.env.NITRO_HOST || stdEnv.env.HOST || false;
|
|
96
|
-
let port = stdEnv.env.NITRO_PORT || stdEnv.env.PORT || (stdEnv.isDevelopment ? 3e3 : false);
|
|
97
|
-
let protocol = cert && key || !stdEnv.isDevelopment ? "https" : "http";
|
|
98
|
-
if ((stdEnv.isDevelopment || stdEnv.env.prerender) && stdEnv.env.NUXT_VITE_NODE_OPTIONS) {
|
|
99
|
-
const origin = JSON.parse(stdEnv.env.NUXT_VITE_NODE_OPTIONS).baseURL.replace("/__nuxt_vite_node__", "");
|
|
100
|
-
host = ufo.withoutProtocol(origin);
|
|
101
|
-
protocol = origin.includes("https") ? "https" : "http";
|
|
102
|
-
}
|
|
103
|
-
if (typeof host === "string" && host.includes(":")) {
|
|
104
|
-
port = host.split(":").pop();
|
|
105
|
-
host = host.split(":")[0];
|
|
106
|
-
}
|
|
107
|
-
port = port ? `:${port}` : "";
|
|
108
|
-
return `${protocol}://${host}${port}/`;
|
|
109
|
-
}
|
|
110
12
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return (path) => {
|
|
121
|
-
return urls.resolveSitePath(path, {
|
|
122
|
-
...options,
|
|
123
|
-
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
124
|
-
trailingSlash: siteConfig.trailingSlash,
|
|
125
|
-
base: nuxtBase
|
|
126
|
-
});
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
function withSiteUrl(path, options = {}) {
|
|
130
|
-
const siteConfig = useSiteConfig();
|
|
131
|
-
if (!siteConfig.url && options.throwErrorOnMissingSiteUrl)
|
|
132
|
-
throw new Error("Missing url in site config. Please add `{ site: { url: <url> } }` to nuxt.config.ts.");
|
|
133
|
-
const nuxt = kit.useNuxt();
|
|
134
|
-
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
135
|
-
return urls.resolveSitePath(path, {
|
|
136
|
-
absolute: true,
|
|
137
|
-
siteUrl: siteConfig.url || "",
|
|
138
|
-
trailingSlash: siteConfig.trailingSlash,
|
|
139
|
-
base,
|
|
140
|
-
withBase: options.withBase
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
exports.createSitePathResolver = createSitePathResolver;
|
|
145
|
-
exports.getSiteConfigStack = getSiteConfigStack;
|
|
146
|
-
exports.initSiteConfig = initSiteConfig;
|
|
147
|
-
exports.installNuxtSiteConfig = installNuxtSiteConfig;
|
|
148
|
-
exports.updateSiteConfig = updateSiteConfig;
|
|
149
|
-
exports.useNitroOrigin = useNitroOrigin;
|
|
150
|
-
exports.useSiteConfig = useSiteConfig;
|
|
151
|
-
exports.withSiteTrailingSlash = withSiteTrailingSlash;
|
|
152
|
-
exports.withSiteUrl = withSiteUrl;
|
|
13
|
+
exports.createSitePathResolver = urls.createSitePathResolver;
|
|
14
|
+
exports.getSiteConfigStack = urls.getSiteConfigStack;
|
|
15
|
+
exports.initSiteConfig = urls.initSiteConfig;
|
|
16
|
+
exports.installNuxtSiteConfig = urls.installNuxtSiteConfig;
|
|
17
|
+
exports.updateSiteConfig = urls.updateSiteConfig;
|
|
18
|
+
exports.useNitroOrigin = urls.useNitroOrigin;
|
|
19
|
+
exports.useSiteConfig = urls.useSiteConfig;
|
|
20
|
+
exports.withSiteTrailingSlash = urls.withSiteTrailingSlash;
|
|
21
|
+
exports.withSiteUrl = urls.withSiteUrl;
|
package/dist/index.mjs
CHANGED
|
@@ -1,142 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
async function initSiteConfig(nuxt = tryUseNuxt()) {
|
|
9
|
-
if (!nuxt)
|
|
10
|
-
return;
|
|
11
|
-
let siteConfig = nuxt._siteConfig;
|
|
12
|
-
if (siteConfig)
|
|
13
|
-
return siteConfig;
|
|
14
|
-
siteConfig = createSiteConfigStack();
|
|
15
|
-
const rootDir = nuxt?.options.rootDir || process.cwd?.() || false;
|
|
16
|
-
siteConfig.push({
|
|
17
|
-
_context: "system",
|
|
18
|
-
_priority: -15,
|
|
19
|
-
name: rootDir ? rootDir.split("/").pop() : void 0,
|
|
20
|
-
env: process.env.NODE_ENV
|
|
21
|
-
});
|
|
22
|
-
if (rootDir) {
|
|
23
|
-
const pkgJson = await readPackageJSON(rootDir);
|
|
24
|
-
if (pkgJson) {
|
|
25
|
-
siteConfig.push({
|
|
26
|
-
_context: "package.json",
|
|
27
|
-
_priority: -10,
|
|
28
|
-
name: pkgJson.name,
|
|
29
|
-
description: pkgJson.description
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
siteConfig.push({
|
|
34
|
-
_context: "vendorEnv",
|
|
35
|
-
_priority: -5,
|
|
36
|
-
url: [
|
|
37
|
-
// vercel
|
|
38
|
-
process.env.VERCEL_URL,
|
|
39
|
-
process.env.NUXT_ENV_VERCEL_URL,
|
|
40
|
-
// netlify
|
|
41
|
-
process.env.URL,
|
|
42
|
-
// cloudflare pages
|
|
43
|
-
process.env.CF_PAGES_URL
|
|
44
|
-
].find((k) => Boolean(k)),
|
|
45
|
-
name: [
|
|
46
|
-
// vercel
|
|
47
|
-
process.env.NUXT_ENV_VERCEL_GIT_REPO_SLUG,
|
|
48
|
-
// netlify
|
|
49
|
-
process.env.SITE_NAME
|
|
50
|
-
].find((k) => Boolean(k))
|
|
51
|
-
});
|
|
52
|
-
const runtimeConfig = nuxt.options.runtimeConfig;
|
|
53
|
-
const runtimeConfigEnvKeys = [
|
|
54
|
-
...Object.entries(runtimeConfig.site || {}).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v]),
|
|
55
|
-
...Object.entries([...Object.entries(runtimeConfig), ...Object.entries(runtimeConfig.public)]).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v])
|
|
56
|
-
];
|
|
57
|
-
siteConfig.push({
|
|
58
|
-
_priority: -2,
|
|
59
|
-
_context: "legacyRuntimeConfig",
|
|
60
|
-
...Object.fromEntries(runtimeConfigEnvKeys)
|
|
61
|
-
});
|
|
62
|
-
siteConfig.push({
|
|
63
|
-
_context: "buildEnv",
|
|
64
|
-
_priority: -1,
|
|
65
|
-
...envSiteConfig(process.env)
|
|
66
|
-
});
|
|
67
|
-
nuxt._siteConfig = siteConfig;
|
|
68
|
-
return siteConfig;
|
|
69
|
-
}
|
|
70
|
-
async function installNuxtSiteConfig(nuxt = tryUseNuxt()) {
|
|
71
|
-
await installModule(await resolvePath("nuxt-site-config"));
|
|
72
|
-
await initSiteConfig(nuxt);
|
|
73
|
-
}
|
|
74
|
-
function getSiteConfigStack(nuxt = tryUseNuxt()) {
|
|
75
|
-
if (!nuxt)
|
|
76
|
-
throw new Error("Nuxt context is missing.");
|
|
77
|
-
if (!nuxt._siteConfig)
|
|
78
|
-
throw new Error("Site config is not initialized. Make sure you are running your module after nuxt-site-config.");
|
|
79
|
-
return nuxt._siteConfig;
|
|
80
|
-
}
|
|
81
|
-
function updateSiteConfig(input, nuxt = tryUseNuxt()) {
|
|
82
|
-
const container = getSiteConfigStack(nuxt);
|
|
83
|
-
return container.push(input);
|
|
84
|
-
}
|
|
85
|
-
function useSiteConfig(nuxt = tryUseNuxt()) {
|
|
86
|
-
const container = getSiteConfigStack(nuxt);
|
|
87
|
-
return container.get();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function useNitroOrigin() {
|
|
91
|
-
const cert = env.NITRO_SSL_CERT;
|
|
92
|
-
const key = env.NITRO_SSL_KEY;
|
|
93
|
-
let host = env.NITRO_HOST || env.HOST || false;
|
|
94
|
-
let port = env.NITRO_PORT || env.PORT || (isDevelopment ? 3e3 : false);
|
|
95
|
-
let protocol = cert && key || !isDevelopment ? "https" : "http";
|
|
96
|
-
if ((isDevelopment || env.prerender) && env.NUXT_VITE_NODE_OPTIONS) {
|
|
97
|
-
const origin = JSON.parse(env.NUXT_VITE_NODE_OPTIONS).baseURL.replace("/__nuxt_vite_node__", "");
|
|
98
|
-
host = withoutProtocol(origin);
|
|
99
|
-
protocol = origin.includes("https") ? "https" : "http";
|
|
100
|
-
}
|
|
101
|
-
if (typeof host === "string" && host.includes(":")) {
|
|
102
|
-
port = host.split(":").pop();
|
|
103
|
-
host = host.split(":")[0];
|
|
104
|
-
}
|
|
105
|
-
port = port ? `:${port}` : "";
|
|
106
|
-
return `${protocol}://${host}${port}/`;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function withSiteTrailingSlash(path) {
|
|
110
|
-
const siteConfig = useSiteConfig();
|
|
111
|
-
return fixSlashes(siteConfig.trailingSlash, path);
|
|
112
|
-
}
|
|
113
|
-
function createSitePathResolver(options = {}, nuxt = useNuxt()) {
|
|
114
|
-
const siteConfig = useSiteConfig();
|
|
115
|
-
const nitroOrigin = useNitroOrigin();
|
|
116
|
-
const canUseSiteUrl = (options.canonical !== false || env.prerender) && siteConfig.url;
|
|
117
|
-
const nuxtBase = nuxt.options.app.baseURL || "/";
|
|
118
|
-
return (path) => {
|
|
119
|
-
return resolveSitePath(path, {
|
|
120
|
-
...options,
|
|
121
|
-
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
122
|
-
trailingSlash: siteConfig.trailingSlash,
|
|
123
|
-
base: nuxtBase
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
function withSiteUrl(path, options = {}) {
|
|
128
|
-
const siteConfig = useSiteConfig();
|
|
129
|
-
if (!siteConfig.url && options.throwErrorOnMissingSiteUrl)
|
|
130
|
-
throw new Error("Missing url in site config. Please add `{ site: { url: <url> } }` to nuxt.config.ts.");
|
|
131
|
-
const nuxt = useNuxt();
|
|
132
|
-
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
133
|
-
return resolveSitePath(path, {
|
|
134
|
-
absolute: true,
|
|
135
|
-
siteUrl: siteConfig.url || "",
|
|
136
|
-
trailingSlash: siteConfig.trailingSlash,
|
|
137
|
-
base,
|
|
138
|
-
withBase: options.withBase
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export { createSitePathResolver, getSiteConfigStack, initSiteConfig, installNuxtSiteConfig, updateSiteConfig, useNitroOrigin, useSiteConfig, withSiteTrailingSlash, withSiteUrl };
|
|
1
|
+
export { c as createSitePathResolver, g as getSiteConfigStack, i as initSiteConfig, a as installNuxtSiteConfig, u as updateSiteConfig, e as useNitroOrigin, b as useSiteConfig, w as withSiteTrailingSlash, d as withSiteUrl } from './shared/nuxt-site-config-kit.B91Njd6f.mjs';
|
|
2
|
+
import '@nuxt/kit';
|
|
3
|
+
import 'site-config-stack/urls';
|
|
4
|
+
import 'std-env';
|
|
5
|
+
import 'pkg-types';
|
|
6
|
+
import 'site-config-stack';
|
|
7
|
+
import 'ufo';
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const kit = require('@nuxt/kit');
|
|
4
|
+
const urls = require('site-config-stack/urls');
|
|
5
|
+
const stdEnv = require('std-env');
|
|
6
|
+
const pkgTypes = require('pkg-types');
|
|
7
|
+
const siteConfigStack = require('site-config-stack');
|
|
8
|
+
const ufo = require('ufo');
|
|
9
|
+
|
|
10
|
+
async function initSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
11
|
+
if (!nuxt)
|
|
12
|
+
return;
|
|
13
|
+
let siteConfig = nuxt._siteConfig;
|
|
14
|
+
if (siteConfig)
|
|
15
|
+
return siteConfig;
|
|
16
|
+
siteConfig = siteConfigStack.createSiteConfigStack();
|
|
17
|
+
const rootDir = nuxt?.options.rootDir || process.cwd?.() || false;
|
|
18
|
+
siteConfig.push({
|
|
19
|
+
_context: "system",
|
|
20
|
+
_priority: -15,
|
|
21
|
+
name: rootDir ? rootDir.split("/").pop() : void 0,
|
|
22
|
+
env: process.env.NODE_ENV
|
|
23
|
+
});
|
|
24
|
+
if (rootDir) {
|
|
25
|
+
const pkgJson = await pkgTypes.readPackageJSON(rootDir);
|
|
26
|
+
if (pkgJson) {
|
|
27
|
+
siteConfig.push({
|
|
28
|
+
_context: "package.json",
|
|
29
|
+
_priority: -10,
|
|
30
|
+
name: pkgJson.name,
|
|
31
|
+
description: pkgJson.description
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
siteConfig.push({
|
|
36
|
+
_context: "vendorEnv",
|
|
37
|
+
_priority: -5,
|
|
38
|
+
url: [
|
|
39
|
+
// vercel
|
|
40
|
+
process.env.VERCEL_URL,
|
|
41
|
+
process.env.NUXT_ENV_VERCEL_URL,
|
|
42
|
+
// netlify
|
|
43
|
+
process.env.URL,
|
|
44
|
+
// cloudflare pages
|
|
45
|
+
process.env.CF_PAGES_URL
|
|
46
|
+
].find((k) => Boolean(k)),
|
|
47
|
+
name: [
|
|
48
|
+
// vercel
|
|
49
|
+
process.env.NUXT_ENV_VERCEL_GIT_REPO_SLUG,
|
|
50
|
+
// netlify
|
|
51
|
+
process.env.SITE_NAME
|
|
52
|
+
].find((k) => Boolean(k))
|
|
53
|
+
});
|
|
54
|
+
const runtimeConfig = nuxt.options.runtimeConfig;
|
|
55
|
+
const runtimeConfigEnvKeys = [
|
|
56
|
+
...Object.entries(runtimeConfig.site || {}).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v]),
|
|
57
|
+
...Object.entries([...Object.entries(runtimeConfig), ...Object.entries(runtimeConfig.public)]).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v])
|
|
58
|
+
];
|
|
59
|
+
siteConfig.push({
|
|
60
|
+
_priority: -2,
|
|
61
|
+
_context: "legacyRuntimeConfig",
|
|
62
|
+
...Object.fromEntries(runtimeConfigEnvKeys)
|
|
63
|
+
});
|
|
64
|
+
siteConfig.push({
|
|
65
|
+
_context: "buildEnv",
|
|
66
|
+
_priority: -1,
|
|
67
|
+
...siteConfigStack.envSiteConfig(process.env)
|
|
68
|
+
});
|
|
69
|
+
nuxt._siteConfig = siteConfig;
|
|
70
|
+
return siteConfig;
|
|
71
|
+
}
|
|
72
|
+
async function installNuxtSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
73
|
+
await kit.installModule(await kit.resolvePath("nuxt-site-config"));
|
|
74
|
+
await initSiteConfig(nuxt);
|
|
75
|
+
}
|
|
76
|
+
function getSiteConfigStack(nuxt = kit.tryUseNuxt()) {
|
|
77
|
+
if (!nuxt)
|
|
78
|
+
throw new Error("Nuxt context is missing.");
|
|
79
|
+
if (!nuxt._siteConfig)
|
|
80
|
+
throw new Error("Site config is not initialized. Make sure you are running your module after nuxt-site-config.");
|
|
81
|
+
return nuxt._siteConfig;
|
|
82
|
+
}
|
|
83
|
+
function updateSiteConfig(input, nuxt = kit.tryUseNuxt()) {
|
|
84
|
+
const container = getSiteConfigStack(nuxt);
|
|
85
|
+
return container.push(input);
|
|
86
|
+
}
|
|
87
|
+
function useSiteConfig(nuxt = kit.tryUseNuxt()) {
|
|
88
|
+
const container = getSiteConfigStack(nuxt);
|
|
89
|
+
return container.get();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function useNitroOrigin() {
|
|
93
|
+
const cert = stdEnv.env.NITRO_SSL_CERT;
|
|
94
|
+
const key = stdEnv.env.NITRO_SSL_KEY;
|
|
95
|
+
let host = stdEnv.env.NITRO_HOST || stdEnv.env.HOST || false;
|
|
96
|
+
let port = stdEnv.env.NITRO_PORT || stdEnv.env.PORT || (stdEnv.isDevelopment ? 3e3 : false);
|
|
97
|
+
let protocol = cert && key || !stdEnv.isDevelopment ? "https" : "http";
|
|
98
|
+
if ((stdEnv.isDevelopment || stdEnv.env.prerender) && stdEnv.env.NUXT_VITE_NODE_OPTIONS) {
|
|
99
|
+
const origin = JSON.parse(stdEnv.env.NUXT_VITE_NODE_OPTIONS).baseURL.replace("/__nuxt_vite_node__", "");
|
|
100
|
+
host = ufo.withoutProtocol(origin);
|
|
101
|
+
protocol = origin.includes("https") ? "https" : "http";
|
|
102
|
+
}
|
|
103
|
+
if (typeof host === "string" && host.includes(":")) {
|
|
104
|
+
port = host.split(":").pop();
|
|
105
|
+
host = host.split(":")[0];
|
|
106
|
+
}
|
|
107
|
+
port = port ? `:${port}` : "";
|
|
108
|
+
return `${protocol}://${host}${port}/`;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function withSiteTrailingSlash(path) {
|
|
112
|
+
const siteConfig = useSiteConfig();
|
|
113
|
+
return urls.fixSlashes(siteConfig.trailingSlash, path);
|
|
114
|
+
}
|
|
115
|
+
function createSitePathResolver(options = {}, nuxt = kit.useNuxt()) {
|
|
116
|
+
const siteConfig = useSiteConfig();
|
|
117
|
+
const nitroOrigin = useNitroOrigin();
|
|
118
|
+
const canUseSiteUrl = (options.canonical !== false || stdEnv.env.prerender) && siteConfig.url;
|
|
119
|
+
const nuxtBase = nuxt.options.app.baseURL || "/";
|
|
120
|
+
return (path) => {
|
|
121
|
+
return urls.resolveSitePath(path, {
|
|
122
|
+
...options,
|
|
123
|
+
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
124
|
+
trailingSlash: siteConfig.trailingSlash,
|
|
125
|
+
base: nuxtBase
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function withSiteUrl(path, options = {}) {
|
|
130
|
+
const siteConfig = useSiteConfig();
|
|
131
|
+
if (!siteConfig.url && options.throwErrorOnMissingSiteUrl)
|
|
132
|
+
throw new Error("Missing url in site config. Please add `{ site: { url: <url> } }` to nuxt.config.ts.");
|
|
133
|
+
const nuxt = kit.useNuxt();
|
|
134
|
+
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
135
|
+
return urls.resolveSitePath(path, {
|
|
136
|
+
absolute: true,
|
|
137
|
+
siteUrl: siteConfig.url || "",
|
|
138
|
+
trailingSlash: siteConfig.trailingSlash,
|
|
139
|
+
base,
|
|
140
|
+
withBase: options.withBase
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
exports.createSitePathResolver = createSitePathResolver;
|
|
145
|
+
exports.getSiteConfigStack = getSiteConfigStack;
|
|
146
|
+
exports.initSiteConfig = initSiteConfig;
|
|
147
|
+
exports.installNuxtSiteConfig = installNuxtSiteConfig;
|
|
148
|
+
exports.updateSiteConfig = updateSiteConfig;
|
|
149
|
+
exports.useNitroOrigin = useNitroOrigin;
|
|
150
|
+
exports.useSiteConfig = useSiteConfig;
|
|
151
|
+
exports.withSiteTrailingSlash = withSiteTrailingSlash;
|
|
152
|
+
exports.withSiteUrl = withSiteUrl;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { tryUseNuxt, installModule, resolvePath, useNuxt } from '@nuxt/kit';
|
|
2
|
+
import { fixSlashes, resolveSitePath } from 'site-config-stack/urls';
|
|
3
|
+
import { env, isDevelopment } from 'std-env';
|
|
4
|
+
import { readPackageJSON } from 'pkg-types';
|
|
5
|
+
import { createSiteConfigStack, envSiteConfig } from 'site-config-stack';
|
|
6
|
+
import { withoutProtocol } from 'ufo';
|
|
7
|
+
|
|
8
|
+
async function initSiteConfig(nuxt = tryUseNuxt()) {
|
|
9
|
+
if (!nuxt)
|
|
10
|
+
return;
|
|
11
|
+
let siteConfig = nuxt._siteConfig;
|
|
12
|
+
if (siteConfig)
|
|
13
|
+
return siteConfig;
|
|
14
|
+
siteConfig = createSiteConfigStack();
|
|
15
|
+
const rootDir = nuxt?.options.rootDir || process.cwd?.() || false;
|
|
16
|
+
siteConfig.push({
|
|
17
|
+
_context: "system",
|
|
18
|
+
_priority: -15,
|
|
19
|
+
name: rootDir ? rootDir.split("/").pop() : void 0,
|
|
20
|
+
env: process.env.NODE_ENV
|
|
21
|
+
});
|
|
22
|
+
if (rootDir) {
|
|
23
|
+
const pkgJson = await readPackageJSON(rootDir);
|
|
24
|
+
if (pkgJson) {
|
|
25
|
+
siteConfig.push({
|
|
26
|
+
_context: "package.json",
|
|
27
|
+
_priority: -10,
|
|
28
|
+
name: pkgJson.name,
|
|
29
|
+
description: pkgJson.description
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
siteConfig.push({
|
|
34
|
+
_context: "vendorEnv",
|
|
35
|
+
_priority: -5,
|
|
36
|
+
url: [
|
|
37
|
+
// vercel
|
|
38
|
+
process.env.VERCEL_URL,
|
|
39
|
+
process.env.NUXT_ENV_VERCEL_URL,
|
|
40
|
+
// netlify
|
|
41
|
+
process.env.URL,
|
|
42
|
+
// cloudflare pages
|
|
43
|
+
process.env.CF_PAGES_URL
|
|
44
|
+
].find((k) => Boolean(k)),
|
|
45
|
+
name: [
|
|
46
|
+
// vercel
|
|
47
|
+
process.env.NUXT_ENV_VERCEL_GIT_REPO_SLUG,
|
|
48
|
+
// netlify
|
|
49
|
+
process.env.SITE_NAME
|
|
50
|
+
].find((k) => Boolean(k))
|
|
51
|
+
});
|
|
52
|
+
const runtimeConfig = nuxt.options.runtimeConfig;
|
|
53
|
+
const runtimeConfigEnvKeys = [
|
|
54
|
+
...Object.entries(runtimeConfig.site || {}).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v]),
|
|
55
|
+
...Object.entries([...Object.entries(runtimeConfig), ...Object.entries(runtimeConfig.public)]).filter(([k]) => k.startsWith("site")).map(([k, v]) => [k.replace(/^site/, ""), v])
|
|
56
|
+
];
|
|
57
|
+
siteConfig.push({
|
|
58
|
+
_priority: -2,
|
|
59
|
+
_context: "legacyRuntimeConfig",
|
|
60
|
+
...Object.fromEntries(runtimeConfigEnvKeys)
|
|
61
|
+
});
|
|
62
|
+
siteConfig.push({
|
|
63
|
+
_context: "buildEnv",
|
|
64
|
+
_priority: -1,
|
|
65
|
+
...envSiteConfig(process.env)
|
|
66
|
+
});
|
|
67
|
+
nuxt._siteConfig = siteConfig;
|
|
68
|
+
return siteConfig;
|
|
69
|
+
}
|
|
70
|
+
async function installNuxtSiteConfig(nuxt = tryUseNuxt()) {
|
|
71
|
+
await installModule(await resolvePath("nuxt-site-config"));
|
|
72
|
+
await initSiteConfig(nuxt);
|
|
73
|
+
}
|
|
74
|
+
function getSiteConfigStack(nuxt = tryUseNuxt()) {
|
|
75
|
+
if (!nuxt)
|
|
76
|
+
throw new Error("Nuxt context is missing.");
|
|
77
|
+
if (!nuxt._siteConfig)
|
|
78
|
+
throw new Error("Site config is not initialized. Make sure you are running your module after nuxt-site-config.");
|
|
79
|
+
return nuxt._siteConfig;
|
|
80
|
+
}
|
|
81
|
+
function updateSiteConfig(input, nuxt = tryUseNuxt()) {
|
|
82
|
+
const container = getSiteConfigStack(nuxt);
|
|
83
|
+
return container.push(input);
|
|
84
|
+
}
|
|
85
|
+
function useSiteConfig(nuxt = tryUseNuxt()) {
|
|
86
|
+
const container = getSiteConfigStack(nuxt);
|
|
87
|
+
return container.get();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function useNitroOrigin() {
|
|
91
|
+
const cert = env.NITRO_SSL_CERT;
|
|
92
|
+
const key = env.NITRO_SSL_KEY;
|
|
93
|
+
let host = env.NITRO_HOST || env.HOST || false;
|
|
94
|
+
let port = env.NITRO_PORT || env.PORT || (isDevelopment ? 3e3 : false);
|
|
95
|
+
let protocol = cert && key || !isDevelopment ? "https" : "http";
|
|
96
|
+
if ((isDevelopment || env.prerender) && env.NUXT_VITE_NODE_OPTIONS) {
|
|
97
|
+
const origin = JSON.parse(env.NUXT_VITE_NODE_OPTIONS).baseURL.replace("/__nuxt_vite_node__", "");
|
|
98
|
+
host = withoutProtocol(origin);
|
|
99
|
+
protocol = origin.includes("https") ? "https" : "http";
|
|
100
|
+
}
|
|
101
|
+
if (typeof host === "string" && host.includes(":")) {
|
|
102
|
+
port = host.split(":").pop();
|
|
103
|
+
host = host.split(":")[0];
|
|
104
|
+
}
|
|
105
|
+
port = port ? `:${port}` : "";
|
|
106
|
+
return `${protocol}://${host}${port}/`;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function withSiteTrailingSlash(path) {
|
|
110
|
+
const siteConfig = useSiteConfig();
|
|
111
|
+
return fixSlashes(siteConfig.trailingSlash, path);
|
|
112
|
+
}
|
|
113
|
+
function createSitePathResolver(options = {}, nuxt = useNuxt()) {
|
|
114
|
+
const siteConfig = useSiteConfig();
|
|
115
|
+
const nitroOrigin = useNitroOrigin();
|
|
116
|
+
const canUseSiteUrl = (options.canonical !== false || env.prerender) && siteConfig.url;
|
|
117
|
+
const nuxtBase = nuxt.options.app.baseURL || "/";
|
|
118
|
+
return (path) => {
|
|
119
|
+
return resolveSitePath(path, {
|
|
120
|
+
...options,
|
|
121
|
+
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
122
|
+
trailingSlash: siteConfig.trailingSlash,
|
|
123
|
+
base: nuxtBase
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function withSiteUrl(path, options = {}) {
|
|
128
|
+
const siteConfig = useSiteConfig();
|
|
129
|
+
if (!siteConfig.url && options.throwErrorOnMissingSiteUrl)
|
|
130
|
+
throw new Error("Missing url in site config. Please add `{ site: { url: <url> } }` to nuxt.config.ts.");
|
|
131
|
+
const nuxt = useNuxt();
|
|
132
|
+
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
133
|
+
return resolveSitePath(path, {
|
|
134
|
+
absolute: true,
|
|
135
|
+
siteUrl: siteConfig.url || "",
|
|
136
|
+
trailingSlash: siteConfig.trailingSlash,
|
|
137
|
+
base,
|
|
138
|
+
withBase: options.withBase
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export { installNuxtSiteConfig as a, useSiteConfig as b, createSitePathResolver as c, withSiteUrl as d, useNitroOrigin as e, getSiteConfigStack as g, initSiteConfig as i, updateSiteConfig as u, withSiteTrailingSlash as w };
|
package/dist/urls.cjs
CHANGED
package/dist/urls.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@nuxt/kit';
|
|
2
2
|
import 'site-config-stack/urls';
|
|
3
3
|
import 'std-env';
|
|
4
|
-
export { createSitePathResolver, withSiteTrailingSlash, withSiteUrl } from './
|
|
4
|
+
export { c as createSitePathResolver, w as withSiteTrailingSlash, d as withSiteUrl } from './shared/nuxt-site-config-kit.B91Njd6f.mjs';
|
|
5
5
|
import 'pkg-types';
|
|
6
6
|
import 'site-config-stack';
|
|
7
7
|
import 'ufo';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-site-config-kit",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.8",
|
|
5
5
|
"description": "Shared site configuration build-time utilities for Nuxt 3 modules.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://github.com/sponsors/harlan-zw",
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"urls.d.ts"
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@nuxt/kit": "^3.16.
|
|
40
|
+
"@nuxt/kit": "^3.16.2",
|
|
41
41
|
"pkg-types": "^2.1.0",
|
|
42
|
-
"std-env": "^3.
|
|
42
|
+
"std-env": "^3.9.0",
|
|
43
43
|
"ufo": "^1.5.4",
|
|
44
|
-
"site-config-stack": "3.1.
|
|
44
|
+
"site-config-stack": "3.1.8"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@nuxt/schema": "^3.16.
|
|
47
|
+
"@nuxt/schema": "^3.16.2"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"lint": "eslint . --fix",
|