Files
comunidadhll/frontend/assets/js/config.js
devRaGonSa 0da8338ba8 Fix
2026-06-05 16:57:25 +02:00

71 lines
2.0 KiB
JavaScript

(function () {
"use strict";
const DEFAULT_DEV_BACKEND = "http://127.0.0.1:8000";
function isLocalHost(hostname) {
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1";
}
function hasOwn(object, property) {
return Object.prototype.hasOwnProperty.call(object || {}, property);
}
function resolveConfiguredBackendBaseUrl() {
const explicitConfig = window.HLL_FRONTEND_CONFIG || {};
if (hasOwn(explicitConfig, "backendBaseUrl")) {
return String(explicitConfig.backendBaseUrl || "");
}
const body = document.body;
if (body && body.dataset && hasOwn(body.dataset, "backendBaseUrl")) {
const bodyValue = body.dataset.backendBaseUrl;
if (bodyValue === DEFAULT_DEV_BACKEND && !isLocalHost(window.location.hostname)) {
return "";
}
return String(bodyValue || "");
}
return isLocalHost(window.location.hostname) ? DEFAULT_DEV_BACKEND : "";
}
function rewriteUrl(input) {
const configuredBaseUrl = resolveConfiguredBackendBaseUrl();
if (typeof input !== "string") {
return input;
}
if (configuredBaseUrl === "") {
if (input.startsWith(`${DEFAULT_DEV_BACKEND}/`)) {
return input.slice(DEFAULT_DEV_BACKEND.length);
}
return input;
}
if (input.startsWith(`${DEFAULT_DEV_BACKEND}/`)) {
return `${configuredBaseUrl}${input.slice(DEFAULT_DEV_BACKEND.length)}`;
}
return input;
}
const nativeFetch = window.fetch.bind(window);
window.fetch = function hllConfiguredFetch(input, init) {
if (typeof input === "string") {
return nativeFetch(rewriteUrl(input), init);
}
if (input instanceof Request) {
const rewrittenUrl = rewriteUrl(input.url);
if (rewrittenUrl !== input.url) {
return nativeFetch(new Request(rewrittenUrl, input), init);
}
}
return nativeFetch(input, init);
};
window.HLL_FRONTEND_CONFIG = Object.freeze({
...window.HLL_FRONTEND_CONFIG,
backendBaseUrl: resolveConfiguredBackendBaseUrl(),
});
})();