28 lines
914 B
TypeScript
28 lines
914 B
TypeScript
import { config } from '@grafana/runtime';
|
|
|
|
export type RelativeUrl = `/${string}`;
|
|
export function createRelativeUrl(
|
|
path: RelativeUrl,
|
|
queryParams?: string[][] | Record<string, string> | string | URLSearchParams
|
|
) {
|
|
const searchParams = new URLSearchParams(queryParams);
|
|
const searchParamsString = searchParams.toString();
|
|
|
|
return `${config.appSubUrl}${path}${searchParamsString ? `?${searchParamsString}` : ''}`;
|
|
}
|
|
|
|
export function createAbsoluteUrl(
|
|
path: RelativeUrl,
|
|
queryParams?: string[][] | Record<string, string> | string | URLSearchParams
|
|
) {
|
|
const searchParams = new URLSearchParams(queryParams);
|
|
const searchParamsString = searchParams.toString();
|
|
|
|
try {
|
|
const baseUrl = new URL(config.appSubUrl + path, config.appUrl);
|
|
return `${baseUrl.href}${searchParamsString ? `?${searchParamsString}` : ''}`;
|
|
} catch (err) {
|
|
return createRelativeUrl(path, queryParams);
|
|
}
|
|
}
|