2025-09-05 14:59:21 +08:00

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 };