23 行
558 B
TypeScript
23 行
558 B
TypeScript
import { ENV } from "./_core/env";
|
|
|
|
function hasProtocol(value: string) {
|
|
return /^[a-z][a-z0-9+.-]*:\/\//i.test(value);
|
|
}
|
|
|
|
export function toPublicUrl(pathOrUrl: string) {
|
|
const value = pathOrUrl.trim();
|
|
if (!value) {
|
|
throw new Error("Public URL value is empty");
|
|
}
|
|
|
|
if (hasProtocol(value)) {
|
|
return value;
|
|
}
|
|
|
|
if (!ENV.appPublicBaseUrl) {
|
|
throw new Error("APP_PUBLIC_BASE_URL is required for externally accessible asset URLs");
|
|
}
|
|
|
|
return new URL(value.startsWith("/") ? value : `/${value}`, ENV.appPublicBaseUrl).toString();
|
|
}
|