2022-05-19 14:06:18 +02:00
|
|
|
export const formatApiPath = (path: string, base = basePath): string => {
|
|
|
|
return joinPaths(base, path);
|
2021-05-04 09:59:42 +02:00
|
|
|
};
|
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
export const formatAssetPath = (path: string, base = basePath): string => {
|
|
|
|
if (import.meta.env.DEV && import.meta.env.BASE_URL !== '/') {
|
|
|
|
// Vite will automatically add BASE_URL to imported assets.
|
|
|
|
return joinPaths(path);
|
|
|
|
}
|
2021-05-04 09:59:42 +02:00
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
return joinPaths(base, path);
|
|
|
|
};
|
2021-05-04 09:59:42 +02:00
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
// Parse the basePath value from the HTML meta tag.
|
|
|
|
export const parseBasePath = (value = basePathMetaTagContent()): string => {
|
|
|
|
if (import.meta.env.DEV && import.meta.env.BASE_URL !== '/') {
|
|
|
|
// Use the `UNLEASH_BASE_PATH` env var instead of the meta tag.
|
|
|
|
return joinPaths(import.meta.env.BASE_URL);
|
2021-05-04 09:59:42 +02:00
|
|
|
}
|
2022-05-19 14:06:18 +02:00
|
|
|
|
|
|
|
return value === '::baseUriPath::' ? '' : joinPaths(value);
|
2021-05-04 09:59:42 +02:00
|
|
|
};
|
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
// Join paths with a leading separator and without a trailing separator.
|
|
|
|
const joinPaths = (...paths: string[]): string => {
|
2023-01-26 15:34:42 +01:00
|
|
|
return ['', ...paths]
|
2022-05-19 14:06:18 +02:00
|
|
|
.join('/')
|
|
|
|
.replace(/\/+$/g, '') // Remove trailing separators.
|
|
|
|
.replace(/\/+/g, '/'); // Collapse repeated separators.
|
|
|
|
};
|
2021-05-04 09:59:42 +02:00
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
const basePathMetaTagContent = (): string => {
|
|
|
|
const el = document.querySelector<HTMLMetaElement>(
|
2023-10-02 14:25:46 +02:00
|
|
|
'meta[name="baseUriPath"]',
|
2022-05-19 14:06:18 +02:00
|
|
|
);
|
2021-05-04 09:59:42 +02:00
|
|
|
|
2022-05-19 14:06:18 +02:00
|
|
|
return el?.content ?? '';
|
2021-05-04 09:59:42 +02:00
|
|
|
};
|
2022-05-19 14:06:18 +02:00
|
|
|
|
|
|
|
export const basePath = parseBasePath();
|