33 lines
1.2 KiB
JavaScript
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
|
||
|
|
});
|
||
|
|
}
|