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

35 lines
1.3 KiB
JavaScript

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