47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const kit = require('@nuxt/kit');
|
|
const urls = require('site-config-stack/urls');
|
|
const stdEnv = require('std-env');
|
|
const util = require('./shared/nuxt-site-config-kit.a48e9dc3.cjs');
|
|
require('pkg-types');
|
|
require('site-config-stack');
|
|
require('ufo');
|
|
|
|
function withSiteTrailingSlash(path) {
|
|
const siteConfig = util.useSiteConfig();
|
|
return urls.fixSlashes(siteConfig.trailingSlash, path);
|
|
}
|
|
function createSitePathResolver(options = {}, nuxt = kit.useNuxt()) {
|
|
const siteConfig = util.useSiteConfig();
|
|
const nitroOrigin = util.useNitroOrigin();
|
|
const canUseSiteUrl = (options.canonical !== false || stdEnv.env.prerender) && siteConfig.url;
|
|
const nuxtBase = nuxt.options.app.baseURL || "/";
|
|
return (path) => {
|
|
return urls.resolveSitePath(path, {
|
|
...options,
|
|
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
trailingSlash: siteConfig.trailingSlash,
|
|
base: nuxtBase
|
|
});
|
|
};
|
|
}
|
|
function withSiteUrl(path, options = {}) {
|
|
const siteConfig = util.useSiteConfig();
|
|
if (!siteConfig.url && options.throwErrorOnMissingSiteUrl)
|
|
throw new Error("Missing url in site config. Please add `{ site: { url: <url> } }` to nuxt.config.ts.");
|
|
const nuxt = kit.useNuxt();
|
|
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
return urls.resolveSitePath(path, {
|
|
absolute: true,
|
|
siteUrl: siteConfig.url || "",
|
|
trailingSlash: siteConfig.trailingSlash,
|
|
base,
|
|
withBase: options.withBase
|
|
});
|
|
}
|
|
|
|
exports.createSitePathResolver = createSitePathResolver;
|
|
exports.withSiteTrailingSlash = withSiteTrailingSlash;
|
|
exports.withSiteUrl = withSiteUrl;
|