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

33 lines
1.2 KiB
JavaScript

import { useNitroOrigin, useRuntimeConfig, useSiteConfig } from "#imports";
import { fixSlashes, resolveSitePath } from "site-config-stack/urls";
export function createSitePathResolver(e, options = {}) {
const siteConfig = useSiteConfig(e);
const nitroOrigin = useNitroOrigin(e);
const nuxtBase = useRuntimeConfig(e).app.baseURL || "/";
return (path) => {
return resolveSitePath(path, {
...options,
siteUrl: options.canonical !== false || process.env.prerender ? siteConfig.url : nitroOrigin,
trailingSlash: siteConfig.trailingSlash,
base: nuxtBase
});
};
}
export function withSiteTrailingSlash(e, path) {
const siteConfig = e.context.siteConfig?.get();
return fixSlashes(siteConfig.trailingSlash, path);
}
export function withSiteUrl(e, path, options = {}) {
const siteConfig = e.context.siteConfig?.get();
let siteUrl = e.context.siteConfigNitroOrigin;
if ((options.canonical !== false || process.env.prerender) && siteConfig.url)
siteUrl = siteConfig.url;
return resolveSitePath(path, {
absolute: true,
siteUrl,
trailingSlash: siteConfig.trailingSlash,
base: e.context.nitro.baseURL,
withBase: options.withBase
});
}