35 lines
1.3 KiB
JavaScript
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)
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|