This commit is contained in:
70
frontend/assets/js/config.js
Normal file
70
frontend/assets/js/config.js
Normal file
@@ -0,0 +1,70 @@
|
||||
(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(),
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user