43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
import { useNuxt } from '@nuxt/kit';
|
|
import { fixSlashes, resolveSitePath } from 'site-config-stack/urls';
|
|
import { env } from 'std-env';
|
|
import { u as useSiteConfig, c as useNitroOrigin } from './shared/nuxt-site-config-kit.41c495f1.mjs';
|
|
import 'pkg-types';
|
|
import 'site-config-stack';
|
|
import 'ufo';
|
|
|
|
function withSiteTrailingSlash(path) {
|
|
const siteConfig = useSiteConfig();
|
|
return fixSlashes(siteConfig.trailingSlash, path);
|
|
}
|
|
function createSitePathResolver(options = {}, nuxt = useNuxt()) {
|
|
const siteConfig = useSiteConfig();
|
|
const nitroOrigin = useNitroOrigin();
|
|
const canUseSiteUrl = (options.canonical !== false || env.prerender) && siteConfig.url;
|
|
const nuxtBase = nuxt.options.app.baseURL || "/";
|
|
return (path) => {
|
|
return resolveSitePath(path, {
|
|
...options,
|
|
siteUrl: canUseSiteUrl ? siteConfig.url : nitroOrigin,
|
|
trailingSlash: siteConfig.trailingSlash,
|
|
base: nuxtBase
|
|
});
|
|
};
|
|
}
|
|
function withSiteUrl(path, options = {}) {
|
|
const siteConfig = 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 = useNuxt();
|
|
const base = nuxt.options.app.baseURL || nuxt.options.nitro.baseURL || "/";
|
|
return resolveSitePath(path, {
|
|
absolute: true,
|
|
siteUrl: siteConfig.url || "",
|
|
trailingSlash: siteConfig.trailingSlash,
|
|
base,
|
|
withBase: options.withBase
|
|
});
|
|
}
|
|
|
|
export { createSitePathResolver, withSiteTrailingSlash, withSiteUrl };
|